示例:
String s1 = JOptionPane.showInputDialog("enter the string");
String s2 = "h2ow |are you";
if (s2.replace all("\\d+","").replaceAll("|", "").contains(s1))
JOptionPane.showMessageDialog(null, "true");
else
JOptionPane.showMessageDialog(null, "false");
是否有替换' |'(垂直条)的方法?
答案 0 :(得分:7)
您需要转义管道符(|
)。未转义,它是regular expression "or" operator。
试试这个:
s2.replaceAll("\\d|\\|", "").contains(s1)
这使用文字管道(regex = \|
,转义为Java = "\\|"
)和实际的管道(|
)。它说,用任何东西替换任何数字或文字管道字符。
注意,正如@alfasin所述,该函数名为replaceAll
,而不是replace_all
。
此外,如果要在同一执行中重复使用此函数,请考虑reusing the matcher object,而不是使用字符串版本(每次都创建一个Matcher对象)。
请考虑将Stack Overflow Regular Expression FAQ加入书签以供将来参考。
答案 1 :(得分:2)
除了家伙回答你还可以使用:
if (s2.replaceAll("[\\d\\|]","").contains(s1))
这个正则表达式在性能方面表现更好,即.replaceAll
两次或在正则表达式上使用|
(正则表达式OR)
答案 2 :(得分:1)
|
表示或使用正则表达式,因此请转义|
以匹配实际字符:
if (s2.replaceAll("\\d+","").replaceAll("\\|", "").contains(s1))