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
newString = myString.replaceAll("[>\\[\\],-]", "");
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.)
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
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();
newString = myString.replaceAll("[>\\[\\],-]", "");
The backslashes are to escape the '[' because the first argument is actually a regular expression.
use regex; the string relaceAll method takes the reegex as first argument and the replacement text as second argument; for example
return myString.replaceAll(">|\\[|\\]|,|-";, "");