Считывание определенной строки из текста

#groovy

Вопрос:

Ниже приведен текст:


запрос: удаление пользователя

Код счета:n34567

спасибо и с уважением

Мул


Я пытаюсь получить строку AccountId:n34567

Ошибка: Ошибка: java.lang.Исключение IndexOutOfBoundsException: индекс выходит за пределы диапазона 0..-1 (индекс = 0)

код:

 String adjusted = text.toString().replaceAll("^(?:[t ]*(?:r?n|r)) ", " ");
System.out.println("******* New Formated Email Bodu ***** :" adjusted)
String content = (adjusted =~ "AccountId:[0-9] ")[0]
System.out.println("Content :" content)
 

Комментарии:

1. Я не крутой разработчик, поэтому не могу сказать, как String content = (adjusted =~ "AccountId:[0-9] ")[0] это должно работать, но, предполагая, что вы хотите получить идентификатор учетной записи, вам может потребоваться добавить группу захвата в регулярное выражение, например "AccountId:([0-9] )"

2. Кроме того, ваш номер n в вашем примере начинается с «а», поэтому [0-9] он не будет совпадать с ним

Ответ №1:

Предполагая, что ваш вводимый текст находится в переменной примерно так:

 def text = '''request: user removal

AccountId:n34567

Thanks amp; Regards

Mule'''
 

Тогда вы можете просто сделать это

 def acct = text.find(~/AccountId:(S )/)
 

S соответствует любому символу, не содержащему пробелов

Ответ №2:

 def text = '''request: user removal

AccountId:n34567

Thanks amp; Regards

Mule'''

def accountIdLine = text.lines().find {it.startsWith('AccountId:')}
if (accountIdLine) {
    def accountId = accountIdLine - 'AccountId:'
    println "the Account ID is $accountId"
} else {
    println 'No Account ID was found'
}
 

С принтами:

 the Account ID is n34567