在“:”之后替换文本

时间:2012-03-27 22:56:49

标签: java qr-code

我正在开发一款应用程序,通过ZXing读取QR码。代码运行完美,但我有问题干扰扫描结果,因为我想改变它的某些字。考虑扫描结果是这样的:

ID: 1001 Detail: RM9999

如果我想用另一个字符串更改上面字符串中的“9999”,我该怎么办?让我们说它是

String a1 = 1500

所以预期的结果将是

ID: 1001 Detail: RM1500

编辑:

@Bohemian所以实际问题是我的QR码实际显示如下:

ID: 1001 
Detail: RM9999

而不是我之前显示的线性线。对此有何解决方法?

2 个答案:

答案 0 :(得分:2)

你可以使用lookbehind:

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

这意味着将所有出现的“9999”替换为“:RM”和“1500”。

编辑,回答评论,你可以这样做:

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

请注意,我使用Pattern.quote来逃避任何正则表达式效果。

答案 1 :(得分:0)

这使用了一个look-behind来匹配输入变量数字:

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: RM123ID: 66 Detail: X55,例如