Groovy сопоставление с шаблоном потока символов - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть следующий код, из потока reader я хочу удалить все вхождения Command ran successfully. Пожалуйста, помогите мне предложить любое решение

String ostream="license_all (47286) Command ran successfully. License a Command ran     successfully."
Reader reader = new StringReader(ostream)
for(c in reader)
{
print(c)
}

1 Ответ

3 голосов
/ 28 сентября 2011

Если вам нужна только точная форма Command ran successfully., то вы можете сделать это:

reader.eachLine{ c ->
    println c.replaceAll('Command ran successfully.', '')
}

Однако, если вы хотите быть более гибким и заменить его независимо от пробелов и регистра, используйте это:

reader.eachLine{ c ->
    println c.replaceAll(/(?i)command\s+ran\s+successfully\s*\./, '')
}

Обратите внимание, что в обоих случаях, поскольку мы зацикливаемся на каждой строке , может быть важно добавить обратно в разрыв строки (println против print). Кроме того, из-за зацикливания каждой строки это не заменит строку, если она разбита более чем на одну строку.

Вот полный пример , который вы можете запустить и изменить в Groovy Web Console . ( Ссылка на исходную с for...in. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...