#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