i want to remove all of the following chars from my string
">[],-"
at the moment im doing this. but there must be a more efficient way
newString = myString.replace(">","").replace("[","").replace("]","")....
i want to remove all of the following chars from my string
">[],-"
at the moment im doing this. but there must be a more efficient way
newString = myString.replace(">","").replace("[","").replace("]","")....
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,"");
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.
[]) because you are looking for any of them on their own, not a sequence of all of them in a row...Using the replace / replaceAll methods causes a new Pattern to be compiled each time. So if you are doing this multiple times I would strongly suggest either looping through the characters or creating a single regular expression to use repeatedly.
Pattern instance, in Java) if this is important. See the Java doc for java.util.regex.Pattern, which also gives a basic overview of the regular expression syntax supported by Java's regex engine.newString = myString.replaceAll("[>\\[\\],-]", "");
use regex; the string relaceAll method takes the reegex as first argument and the replacement text as second argument; for example
return myString.replaceAll(">|\\[|\\]|,|-";, "");