如何从字符串中删除无效字符?

arb*_*erb 5 java android

我不知道如何从Java中的字符串中删除无效字符.我正在尝试删除所有不是数字,字母或()[]的字符.我怎样才能做到这一点?

谢谢

Bri*_*ach 16

String foo = "this is a thing with & in it";
foo = foo.replaceAll("[^A-Za-z0-9()\\[\\]]", "");
Run Code Online (Sandbox Code Playgroud)

Javadocs是你的朋友.正则表达式也是你的朋友.

编辑:

那就是siad,这只适用于拉丁字母; 你可以相应调整.\\w可用于a-zA-Z表示"单词"字符,如果它适用于您的情况虽然它包括_.


Lou*_*man 8

使用Guava,几乎可以肯定比正则表达式更高效(也更可读):

CharMatcher desired = CharMatcher.JAVA_DIGIT
  .or(CharMatcher.JAVA_LETTER)
  .or(CharMatcher.anyOf("()[]"))
  .precomputed(); // optional, may improve performance, YMMV
return desired.retainFrom(string);
Run Code Online (Sandbox Code Playgroud)

  • 不需要狡猾.它只是一个Java库,仅此而且非常方便. (5认同)