Фильтрация вывода StringBuilder - Java - PullRequest
0 голосов
/ 28 июля 2011

Можно ли отфильтровать строки, содержащие определенное слово, которое мне не нужно? Например, выходной пример будет

E/MediaPlayer( 7616): error (1, -2147483648)
D/MediaPlayer( 7616): create failed:
D/MediaPlayer( 7616): java.io.IOException: Prepare failed.: status=0x1
D/MediaPlayer( 7616):   at android.media.MediaPlayer.prepare(Native Method)
D/MediaPlayer( 7616):   at android.media.MediaPlayer.create(MediaPlayer.java:632)
D/MediaPlayer( 7616):   at android.media.MediaPlayer.create(MediaPlayer.java:609)

Однако я хочу, чтобы только первые три строки без "at" были записаны в StringBuilder. Есть ли способ отфильтровать строки, содержащие слово "at"?

while ((finalresult = bufferedReader.readLine()) != null) {
    log.append("Error for file: "+ location.toString() + " " + finalresult +  "\n");

Ответы [ 4 ]

0 голосов
/ 28 июля 2011

Если вы пользователь linux, вы можете использовать команду grep для фильтрации выходных данных консоли. Это не решение для того, что вы хотите сделать, но adb logcat | grep "что-то" это действительно помогает

0 голосов
/ 28 июля 2011

Почему бы просто не проверить

if (finalresult.contains(":   at ")) break;
0 голосов
/ 28 июля 2011
String regex = " at ";
str.replaceAll(regex, "");

, где регулярное выражение является регулярным выражением и описано более подробно здесь: http://developer.android.com/reference/java/util/regex/Pattern.html

0 голосов
/ 28 июля 2011

Может быть, использовать регулярные выражения?http://developer.android.com/reference/java/util/regex/package-summary.html

String s = "sth";
if(s.matches("[a-zA-Z]* at * [a-zA-Z]")){
   do_something();
}
...