删除除“”之外的所有空格字符

时间:2011-02-04 23:29:29

标签: java regex

我认为自己对正则表达式非常好,但是这个看起来非常棘手:我想修剪所有空白,除了空格字符:{{ 1}}。

在Java中,我尝试过的RegEx是' ',但是这个也删除了[\s-[ ]]

更新

以下是我尝试从中删除空格的特定字符串:

project team                manage key

注意:它将是“团队”和“管理”之间的字符。在编辑此帖子时它们显示为长空格,但在视图模式下视为单个空格。

4 个答案:

答案 0 :(得分:22)

尝试使用此正则表达式:

[^\S ]+

由于双重否定,阅读有点令人困惑。正则表达式[\S ]匹配您要保留的字符,即空格或任何不是空格的字符。因此,否定的字符类[^\S ]必须匹配您要删除的所有字符。

答案 1 :(得分:7)

使用Guava CharMatcher

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

如果您实际上只想从字符串的开头和结尾剪掉(例如String.trim()),则使用trimFrom而不是removeFrom

答案 2 :(得分:3)

Java中没有字符类的减法,否则你可以使用[\s--[ ]],注意双破折号。您总是可以使用与补数的交集来模拟集合减法,所以

[\s&&[^ ]]

应该有效。从第一个答案开始,它并不比[^\S ]+好,但原则是不同的,知道两者都是好的。

答案 3 :(得分:0)

我用这个解决了它:

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

它只是所有可能的空格字符(不包括空格)的集合(因此实际上 \ s(无空格)。它包括制表符,回车符,换行符,垂直制表符和换页符。