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

2022-09-01 12:31:40

如何替换字符串中不符合条件的所有字符。我遇到了与 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"

答案 1

解释一下:字符类开头的 ^ 将否定该类,但它必须在类内部才能工作。字符类外的同一字符是字符串/行开头的锚点。

您可以尝试以下操作:

"[^0-9]"

答案 2

以下是字符类定义的快速备忘单,以及它如何与某些正则表达式元字符进行交互。

  • [aeiou]- 只匹配一个小写元音
  • [^aeiou]- 匹配不是小写元音字符(否定字符类)
  • ^[aeiou]- 匹配锚定在行首的小写元音
  • [^^]- 匹配不是脱字符号的字符/'^'
  • ^[^^]- 匹配行首不是脱字符号的字符
  • ^[^.].- 匹配除文字句点之外的任何内容,后跟行首的“任何”字符
  • [a-z]- 在 to 的范围内只匹配一个字符(即所有小写字母)'a''z'
  • [az-]- 匹配 a、a 或 a(文字短划线)'a''z''-'
  • [.*]*- 匹配点和星号的连续序列(可能是空的)
  • [aeiou]{3}- 匹配3个连续的小写元音(所有元音不一定相同)
  • \[aeiou\]- 匹配字符串"[aeiou]"

引用

相关问题