2016-10-06 2 views
-5

Разработка Android.Подстрока строки с обоих концов в java

Ответ таков:

<div id="Song" data-airtime="14:12:52" data-runtime="207.25"> 
<span id="artist">Weeknd</span><span id="titl">Can't Feel My Face</span></div> 

Мне нужен художник, и название. Проблема с методом подстроки index (value), чтобы длина ответа не была фиксированной, например, если имя исполнителя больше .. и т. Д.

Как подстроить или разбить, чтобы соответствовать правильной форме?

Я пробовал левую сторону в порядке.

String left = name.substring(name.indexOf("artist\">")+8); 
+0

Или читатель xml – AxelH

ответ

0

Можно разобрать XML или использовать регулярное выражение. Чтобы все было просто, я предлагаю regex. Вот как вы можете использовать его:

Pattern pattern = Pattern.compile("<span id=\"artist\">(.*?)<\\/span><span id=\"titl\">(.*?)<\\/span>"); 
Matcher m = pattern.matcher(input); 
if (m.find() { 
    MatchResult result = m.toMatchResult(); 
    String artist = result.group(1); 
    String title = result.group(3); 
} 

Где input является XML у вас есть.

В регулярном выражении шаблоны внутри скобок представляют группы захвата. Они позволяют вам извлекать результаты из матча. Однако обратите внимание, что в коде вы извлекаете группы 1 и 3. Это потому, что для каждой группы захвата у вас есть собственная группа захвата и результат. Таким образом, result.group(0) был бы образцом для первой группы, а result.group(2) был бы образцом для второй группы.

1

Вы не хотите разделить струну вручную. Как вы видите, длины являются переменными, и вы не можете предсказать много вещей.

Ссылка, приведенная ниже, содержит множество решений для разбора HTML.

How to use regular expressions to parse HTML in Java?

+0

Это больше похоже на дубликат комментария;) – AxelH

+0

Yah .. lol. ... – Shmuel

+0

спасибо @ Шмуэль. Я попробую это. но почему пустые голоса? – Janos

Смежные вопросы