我有两个字符串数据。我的要求是 - 如果相应的数字完全相同或者其中一个或两个都是?,则两个字符串应匹配。因此,只有当相应的数字不同时,两个字符串才会有所不同。
String str1 = "??56??77??";
String str2 = "??????77??";
我不想进行while循环并逐位进行数字比较。有没有办法可以使用Java Regex实现它。
粗略的想法是将str1设为类似
的模式str1 = [0-9][0-9][5?][6?][0-9][0-9][7?][7?][0-9][0-9]
但我怎么能用5代替5?
请帮忙。
答案 0 :(得分:0)
粗略的想法是将str1设为类似
的模式str1 = [0-9] [0-9] [5?] [6?] [0-9] [0-9] [7?] [7?] [0-9] [0-9 ] 但我怎么能用5代替5?
是的,您可以使用|
而不是(5|?)
[5?]
所以你的模式会变成:
str1 = [0-9][0-9](5|?)(6|?)[0-9][0-9](7|?)(7|?)[0-9][0-9]
我仍然没有得到你的?或者[0-9]在你的例子中,具体案例最容易提供帮助。因为这个人不匹配你的str2 = "??????77??"
如果str2确实如此,那么正确的正则表达式将是??(5|?)(6|?)??(7|?)(7|?)??
我不能告诉我,因为我真的不明白你的投入......
根据您的需要进行编辑,您可以使用它here:
String str1 = "??56??77??";
String pattern = "";
for(int i = 0; i < str1.length(); i++){
char b = str1.charAt(i);
if (b == '?') {
pattern += "[0-9]";
} else {
pattern += "["+b+"?]";
}
}
System.out.print(pattern);