2012-01-20 2 views
0

У меня есть кусок HTML, из которого мне нужно вывести слово. Строка realClean содержит HTML.Извлечение строки, содержащей подстановочный знак из более крупной строки

<div class="smallfont"> 
<small> 

Originally Posted By: chingy51o 

</small> 
</div> 

Мне нужно вытащить из него chingy51o. У меня были проблемы с этим некоторое время, поэтому я расширил свой поиск, чтобы просто вытащить любую строку, содержащую Originally Posted By:, в надежде, что как только я смогу ее изолировать, я могу извлечь из нее более конкретные данные , но я могу даже извлечь эту строку.

  String authorString = "Originally Posted By: .*?"; 
      if (realClean.contains(authorString)) { 
        Log.d("AUTHORS!", authorString + "\n"); 
      } 

но это не возвращает никаких значений.

ответ

1

Создайте объект Scanner и выполните поиск по каждой строке.

String authorString = "Originally Posted By:"; 
Scanner scanner = new Scanner(realClean); 
try { 
    while (scanner.hasNextLine()){ 
    String line = scanner.nextLine(); 
    if(line.contains(authorString){ 
     Log.d("AUTHORS!", line.split(authorString)[1] + "\n"); 
    } 
} 
+0

Спасибо. Когда вы упомянули сканер, я начал прокладывать себе путь через документы, чтобы узнать, могу ли я это понять, затем вернулся и увидел пример кода. Только это не дало мне результатов, которые мне нужны, но это привело меня к правильному пути. Теперь у меня есть его извлечение автора. Еще раз спасибо. – r2DoesInc

+0

строка realClean содержит около 20 из "authorString" s. Есть ли способ перевести его на realClean, чтобы вытащить их все? Я пробовал http://pastebin.com/mC0vR9tV, но он возвращает только одно значение снова и снова. – r2DoesInc

0

Предполагая, что realClean является строкой, вы должны знать, что String.contains() принимает аргумент CharSequence, а не регулярное выражение. Если вы хотите выполнить регулярное выражение, сопоставляемое с String, вам нужно использовать String.matches() или создать шаблон регулярного выражения и сопоставить String с ним вручную.

1

Почему бы не попробовать что-то вроде этого:

 int start = realClean.indexOf("Originally Posted By: ") + 22; 
     int end = realClean.indexOf(newline, start); 
     String realAuthor = realClean.substring(start, end); 

Вы можете заменить символ новой строки все, что отделяет автора от остальной части документа (например, пробел)

+0

+1. Хороший ответ – Mob

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