简体   繁体   中英

Removing all whitespace characters except for “ ”

I consider myself pretty good with Regular Expressions, but this one is appearing to be surprisingly tricky: I want to trim all whitespace, except the space character: ' ' .

In Java, the RegEx I have tried is: [\\s-[ ]] , but this one also strips out ' ' .

UPDATE:

Here is the particular string that I am attempting to strip spaces from:

project team                manage key

Note: it would be the characters between "team" and "manage". They appear as a long space when editing this post but view as a single space in view mode.

Try using this regular expression:

[^\S ]+

It's a bit confusing to read because of the double negative. The regular expression [\\S ] matches the characters you want to keep, ie either a space or anything that isn't a whitespace. The negated character class [^\\S ] therefore must match all the characters you want to remove.

Using a Guava CharMatcher :

String text = ...
String stripped = CharMatcher.WHITESPACE.and(CharMatcher.isNot(' '))
    .removeFrom(text);

If you actually just want that trimmed from the start and end of the string (like String.trim() ) you'd use trimFrom rather than removeFrom .

There's no subtraction of character classes in Java, otherwise you could use [\\s--[ ]] , note the double dash. You can always simulate set subtraction using intersection with the complement, so

[\s&&[^ ]]

should work. It's no better than [^\\S ]+ from the first answer, but the principle is different and it's good to know both.

I solved it with this:

anyString.replace(/[\f\t\n\v\r]*/g, '');

It is just a collection of all possible white space characters excluding blank (so actually \\s without blanks). It includes tab, carriage return, new line, vertical tab and form feed characters.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM