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

时间:2012-02-04 20:18:27

标签: java android

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

由于

7 个答案:

答案 0 :(得分:16)

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

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

修改

这就是siad,这只适用于拉丁字母;你可以相应调整。 \\w可用于a-zA-Z表示“单词”字符,如果它适用于您的情况,但它包含_

答案 1 :(得分:8)

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

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

答案 2 :(得分:3)

试试这个:

String s = "123abc&^%[]()";
s = s.replaceAll("[^A-Za-z0-9()\\[\\]]", "");
System.out.println(s);

以上内容会删除示例字符串中的字符"&^%",只留在s "123abc[]()"

答案 3 :(得分:0)

使用此代码:

String s = "Test[]"
s = s.replaceAll("[");
s = s.replaceAll("]");

答案 4 :(得分:0)

myString.replaceAll("[^\\w\\[\\]\\(\\)]", "");
replaceAll方法将regex作为第一个参数,并替换string中的所有匹配项。此正则表达式匹配所有不是数字,字母或下划线(\\w)和您需要的括号(\\[\\]\\(\\)]

的字符

答案 5 :(得分:0)

您可以从字符串/网址中删除特殊字符或从用户端获取的任何请求参数

  public static String removeSpecialCharacters(String inputString){
        final String[] metaCharacters = {"../","\\..","\\~","~/","~"};
        String outputString="";
        for (int i = 0 ; i < metaCharacters.length ; i++){
            if(inputString.contains(metaCharacters[i])){
                outputString = inputString.replace(metaCharacters[i],"");
                inputString = outputString;
            }else{
                outputString = inputString;
            }
        }
        return outputString;
   }

答案 6 :(得分:0)

public static void main(String[] args) {
    String c = "hjdg$h&jk8^i0ssh6+/?:().,+-#";
    System.out.println(c);
    Pattern pt = Pattern.compile("[^a-zA-Z0-9/?:().,'+/-]");
    Matcher match = pt.matcher(c);
    if (!match.matches()) {
        c = c.replaceAll(pt.pattern(), "");
    }
    System.out.println(c);
}