How do I remove some characters from my String

后端 未结 8 910
无人及你
无人及你 2020-12-17 17:03

i want to remove all of the following chars from my string

\">[],-\"

at the moment im doing this. but there must be a more effic

相关标签:
8条回答
  • 2020-12-17 17:45
    newString = myString.replaceAll("[>\\[\\],-]", "");
    
    0 讨论(0)
  • 2020-12-17 17:52

    Use a regex that describes all the characters you want to replace, with the method that replaces everything matching the regex:

    newString = myString.replaceAll("[<>\\[\\],-]", "");
    

    (edited: I don't think <> are supposed to be escaped, actually. And I forgot to double up the backslashes since they'll be interpreted twice: once by the Java compiler, and again by the regular expression engine.)

    0 讨论(0)
  • 2020-12-17 17:53

    You can use the replaceAll method of the String class.

    You can form a character class consisting of the characters you want to delete. And the replacement string will be empty string "".

    But the characters you want to delete which you'll be putting in the character class might be regex meta-characters and hence need to be escaped. You can manually escape them as many answers show, alternatively you can use the Pattern.quote() method.

    String charToDel = ">[],-";
    String pat = "[" + Pattern.quote(charToDel) + "]";
    String str = "a>b[c]d,e-f";
    str = str.replaceAll(pat,"");
    

    See it

    0 讨论(0)
  • 2020-12-17 17:57

    More efficient performace-wise: yes. You can't "delete" chars from a String so you have t create a new one anyway. Consider a switch/case based solution:

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < s.length(); i++) {
      switch(s.getCharAt(i)) {
        case '>':
        case '[':
        case ']':
        case ',':
        case '-': break;
        default: sb.append(s.getCharAt(i));
      }
    }
    s = sb.toString();
    
    0 讨论(0)
  • 2020-12-17 17:57
    newString = myString.replaceAll("[>\\[\\],-]", "");
    

    The backslashes are to escape the '[' because the first argument is actually a regular expression.

    0 讨论(0)
  • 2020-12-17 18:00

    use regex; the string relaceAll method takes the reegex as first argument and the replacement text as second argument; for example

    return myString.replaceAll(">|\\[|\\]|,|-";, "");
    
    0 讨论(0)
提交回复
热议问题