删除'|' ,数字和用字符串-Java中的空字符替换

时间:2014-07-05 21:20:33

标签: java string replace

示例:

    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");

如果我输入"输入"输出为真

但是,当我进入""输出是假的。

是否有替换' |'(垂直条)的方法?

3 个答案:

答案 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))