Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Парсить строку по маске - Программирование Android

18.09.2016, 11:30. Просмотров 261. Ответов 7
Метки нет (Все метки)

Гуру, подскажите инструмент!

Есть строка вида "фыва<asdf123>"йцук

Надо получить
1) начало строки "<asdf"
2) начало строки йцук
3) значение 123

Не по теме:


пытаюсь в Html.fromHtml добавить "понимание" ключа <back color=#FFFF00>pa</back>

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2016, 11:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсить строку по маске (Программирование Android):

Как парсить WebView? - Программирование Android
webView.loadUrl(&quot;file:///android_asset/test/index.html&quot;);ну вот так я его инициализирую, там работаю, что то делаю. А как потом получить у...

Как правильно парсить? - Программирование Android
У меня есть следующая строка: Как с помощью JSON-парсера считать значение number с объекта order со значением 0 не перебирая их?...

Как парсить html? - Программирование Android
Привет! Я начинающий девелопер, вот я дошел до такого что мне нужно выдернуть информацию с HTML страницы. Узнал что эта штука называется...

Как парсить значения между тегами? - Программирование Android
В общем задание такое: нужны курсы валют отсюда Ссылка . Как можно их спарсить? (желательно только первое значение) Добавлено через 9...

Как правильно парсить json с сервера - Программирование Android
Здравствуйте. У меня есть JSON, полученный с сервера, имеет приблизительно такой вид: В приложении будет два таба, в...

Подскажите как парсить HTML страницу - Программирование Android
Подскажите как парсить HTML страницу,мне надо с http://yandex.ru/ вывести все данные в текст,помогите,я новичёк,много форумов облазил но...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
18.09.2016, 12:07 #2
Используйте substring
Ищите в строке символ <, например так:
Java
1
int index = myString.indexOf("<")
Индекс этого символа (счет идет с нуля) будет началом вашей субстроки "<asdf". Если эта субстрока имеет фиксированную длину и вы ее знаете, то легко получаете индекс первого символа 123. Значение можно выделить с помощью substring.
Свой йцук ищите примерно так же.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
18.09.2016, 12:44  [ТС] #3
Цитата Сообщение от Alexvp Посмотреть сообщение
myString.indexOf("<")
Как раз этого и хотел избежать! Это медленный метод...
Зубрю pattern и регулярные выражения...
0
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
18.09.2016, 15:23 #4
Цитата Сообщение от Tester64 Посмотреть сообщение
Зубрю pattern и регулярные выражения
Было бы любопытно потом посмотреть на ваше решение.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
18.09.2016, 18:31  [ТС] #5
Цитата Сообщение от Alexvp Посмотреть сообщение
Было бы любопытно потом посмотреть на ваше решение.
Похоже у регулярок есть ограничения... Вынужден вернутся к методу int index = myString.indexOf("<")
Успешно добавил фон. Даже смог добавить фону прозрачность, но потерял возможность менять шрифт. Теперь решил ПОЛНОСТЬЮ свой парсер html-строки написать... Через рекурсивный поиск подстрок.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
20.09.2016, 15:07 #6
Java
1
2
3
4
5
6
7
8
9
Pattern pattern = Pattern.compile(""фыва(<\\D+)(\\d+)>"(.*)");
Matcher matcher = pattern.matcher(""фыва<asdf123>"йцук");
if (matcher.matches()) {
    System.out.println(matcher.group(1));
    System.out.println(matcher.group(2));
    System.out.println(matcher.group(3));
}
else
    System.out.println("Не найдено");
0
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,799
Завершенные тесты: 1
20.09.2016, 15:08 #7
просто оставлю это здесь https://jsoup.org/
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
20.09.2016, 17:31  [ТС] #8
Цитата Сообщение от Rube Посмотреть сообщение
Pattern pattern = Pattern.compile(""фыва(<\\D+)(\\d+)>"(.*)");
Пробовал... вполне получилось. Но конечная цель в Html.fromHtml добавить "понимание" ключа <back color=#FFFF00>pa</back>. При этом не потеряв все остальные ключи!!! А через регулярку теряю!

Часто в кнопках, текствювах меняю часть текста особым цветом, размером. Очень удобно задавать текст прямо строкой. СИЛЬНО не хватает возможности выделить часть текста ФОНОМ! Html.fromHtml не поддерживает этого тега! Можно вручную (добавляя командами раскарску через res.setSpan(new BackgroundColorSpan(0x88FF8800), 1, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)) , но тогда считать начало/конец надо. Вот ради этих "расчетов" я и пишу парсер...

Пытаюсь свой парсер написать!
HTML5
1
2
3
<font color=#[6-8 хекс символов]>текст</font>
<back color=#[6-8 хекс символов]>текст</back>
<b>текст</b>
...и т.д.

через регулярку успешно поймал когда только один тег! А мне нужно и когда идут ВЛОЖЕННЫЕ друг в друга!

HTML5
1
<back color=#880088>текст<font color=#880088>те<b>кс</b>т</font> <font color=#880088>текст</font></back>
p.s. бонусом уже обнаружил, что вручную можно задавать прозрачность фону и тексту... и когда-то получалось картинки добавлять...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2016, 17:31
Привет! Вот еще темы с ответами:

Подскажите как правильно парсить HTML страницу - Программирование Android
Код у меня уже имеется но я так и не разобрался с document.select(&quot;&quot;); у меня только title получается парсить,но как например парсить такой...

Правильно ли парсить html или создать api - Программирование Android
Всем привет! Есть сайт для заказа некоего товара, требуется написать приложение для него. Вопрос в следующем: что будет более...

Как парсить конкретные данные из общего класса? - Программирование Android
Здравствуйте!Я использую библиотеку jsoup для парсинга html страниц сайтов. Например если мне нужно получить значение из класса...

Sqlite выборка по маске - Программирование Android
Подскажите, имеется ли в sqlite возможность выборки данных по маске? Например (для SQL Server), select * from words where word like 'И_'.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.09.2016, 17:31
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru