Замена текста после ":" - PullRequest
1 голос
/ 28 марта 2012

Я разрабатываю приложение для чтения QR-кода через ZXing.Код работает безупречно, но у меня возникают проблемы с проверенным результатом, потому что я хотел изменить определенное слово из него.рассмотрим результат сканирования следующим образом:

ID: 1001 Detail: RM9999

что мне делать, если я хочу заменить "9999" в приведенной выше строке другой строкой?Допустим, это

String a1 = 1500

, поэтому ожидаемый результат будет

ID: 1001 Detail: RM1500

отредактировано:

@ Bohemian Так что фактическая проблема заключается в том, что мой QR-код на самом деле отображается так:

ID: 1001 
Detail: RM9999

вместо линейной линии, которую я показываю ранее.какой-нибудь обходной путь для этого?

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Вы можете использовать lookbehind:

String s = stringFromQr.replaceAll("(?<=: RM)9999", "1500");

Что означает заменить все вхождения «9999», перед которыми стоит «: RM», на «1500».

Редактировать, чтобы ответить на комментарии, выможет сделать:

String s = stringFromQr.replaceAll("(?<=: RM)" + Pattern.quote(stringToReplace), stringToReplaceWith);

Обратите внимание, что я использовал Pattern.quote, чтобы избежать любого эффекта регулярного выражения от него.

0 голосов
/ 28 марта 2012

При этом используется поиск для сопоставления входных переменных в нем:

public static void main(String[] args) throws Exception {
    String input = "ID: 1001 Detail: RM9999";
    String a1 = "1500";
    String result = input.replaceAll("(?<=ID: \\d{1,4} Detail: [A-Z]{1,2})\\d+", a1);
    System.out.println(result);
}

Вывод:

ID: 1001 Detail: RM1500

Этот код также будет работать с ID: 789 Detail: RM123 или ID: 66 Detail: X55например

...