替换所有不在范围内的字符(Java字符串)


问题内容

如何替换字符串中不符合条件的所有字符。我在使用NOT运算符时遇到了麻烦。

具体来说,我正在尝试删除所有非数字字符,到目前为止,我已经尝试过:

String number = "703-463-9281";
String number2 = number.replaceAll("[0-9]!", ""); // produces: "703-463-9281" (no change)
String number3 = number.replaceAll("[0-9]", "");  // produces: "--" 
String number4 = number.replaceAll("![0-9]", ""); // produces: "703-463-9281" (no change)
String number6 = number.replaceAll("^[0-9]", ""); // produces: "03-463-9281"

问题答案:

解释一下:字符类开头的^将使该类取反,但必须在类内部才能起作用。字符类外部的相同字符是字符串/行开头的锚点。

您可以尝试以下方法:

"[^0-9]"