How do you replace all of the characters in a string that do not fit a criteria. I'm having trouble specifically with the NOT operator.
Specifically, I'm trying to remove all characters that are not a digit, I've tried this so far:
String number = "703-463-9281";
String number2 = number.replaceAll("[0-9]!", ""); // produces: "703-463-9281" (no change)
String number3 = number.replaceAll("[0-9]", "");  // produces: "--" 
String number4 = number.replaceAll("![0-9]", ""); // produces: "703-463-9281" (no change)
String number6 = number.replaceAll("^[0-9]", ""); // produces: "03-463-9281"
                As you might guess, you can strip all characters but letters and numbers by making a minor change to the replaceAll regular expression, like this: aString. replaceAll("[^a-zA-Z0-9]",""); All I did there was add the numbers [0-9] to our previous range of characters.
The replaceAll() method replaces each substring that matches the regex of the string with the specified text.
To replace a character in a String, without using the replace() method, try the below logic. Let's say the following is our string. int pos = 7; char rep = 'p'; String res = str. substring(0, pos) + rep + str.
To explain: The ^ at the start of a character class will negate that class But it has to be inside the class for that to work. The same character outside a character class is the anchor for start of string/line instead.
You can try this instead:
"[^0-9]" 
                        Here's a quick cheat sheet of character class definition and how it interacts with some regex meta characters.
[aeiou] - matches exactly one lowercase vowel[^aeiou] - matches a character that ISN'T a lowercase vowel (negated character class)^[aeiou] - matches a lowercase vowel anchored at the beginning of the line[^^] - matches a character that isn't a caret/'^' ^[^^] - matches a character that isn't a caret at the beginning of line^[^.]. - matches anything but a literal period, followed by "any" character, at the beginning of line[a-z] - matches exactly one character within the range of 'a' to 'z' (i.e. all lowercase letters)[az-] - matches either an 'a', a 'z', or a '-' (literal dash)[.*]* - matches a contiguous sequence (possibly empty) of dots and asterisks[aeiou]{3} - matches 3 consecutive lowercase vowels (all not necessarily the same vowel)\[aeiou\] - matches the string "[aeiou]" [01-12] range work as expected?If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With