12

我有一个 PHP 脚本<?=str_replace(array('(',')','-',' ','.'), "", $rs["hq_tel"])?>,这是一个字符串替换函数,它采用字符数组并在找到字符串中的任何字符时替换它们。是否有任何与该功能等效的java。我找到了一些方法,但有些使用循环,有些重复语句,但在 java 中没有找到任何像这样的单行解决方案。

提前致谢。

4

4 回答 4

30

您可以使用这样的正则表达式:

//char1, char2 will be replaced by the replacement String. You can add more characters if you want!
String.replaceAll("[char1char2]", "replacement");

其中第一个参数是regex,第二个参数是replacement

请参阅有关如何转义特殊字符的文档(以防万一!)。

于 2013-06-19T10:50:21.240 回答
22

你的解决方案在这里..

替换所有特殊字符

str.replaceAll("[^\\dA-Za-z ]", "");

替换特定的特殊字符

str.replaceAll("[()?:!.,;{}]+", " ");
于 2013-06-19T10:54:54.030 回答
3

如果您不了解正则表达式,则可以使用更详细的内容:

private static ArrayList<Character> special = new ArrayList<Character>(Arrays.asList('(', ')', '-', ' ', '.'));

public static void main(String[] args) {
    String test = "Hello(how-are.you ?";
    String outputText = "";

    for (int i = 0; i < test.length(); i++) {
        Character c = new Character(test.charAt(i));
        if (!special.contains(c))
            outputText += c;
        else
            outputText += "";
    }

    System.out.println(outputText);
}

输出: Hellohowwareyou?

编辑(没有循环但使用正则表达式)

public static void main(String[] args) {
    String test = "Hello(how-are.you ?)";
    String outputText = test.replaceAll("[()-. ]+", "");

    System.out.println(outputText);
}
于 2013-06-19T10:56:19.147 回答
2

String.replaceAll(String regex, String replacement)

于 2013-06-19T10:49:22.457 回答