我正在开发一款应用程序,通过ZXing读取QR码。代码运行完美,但我有问题干扰扫描结果,因为我想改变它的某些字。考虑扫描结果是这样的:
ID: 1001 Detail: RM9999
如果我想用另一个字符串更改上面字符串中的“9999”,我该怎么办?让我们说它是
String a1 = 1500
所以预期的结果将是
ID: 1001 Detail: RM1500
编辑:
@Bohemian所以实际问题是我的QR码实际显示如下:
ID: 1001
Detail: RM9999
而不是我之前显示的线性线。对此有何解决方法?
答案 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: RM123
或ID: 66 Detail: X55
,例如