在Java中寻找快速、简单的方法来更改此字符串

" hello     there   "

变成了这样的东西

"hello there"

在这里我用一个空格替换了所有这些多个空格,除了我还希望字符串开头的一个或多个空格消失。

像这样的事情能让我在一定程度上做到

String mytext = " hello     there   ";
mytext = mytext.replaceAll("( )+", " ");

但事实并非如此。


当前回答

这对我来说非常有效:sValue = sValue.trim()。replaceAll("\\s+", " ");

其他回答

到目前为止,已经提供了很多正确答案,我看到了很多赞。然而,上面提到的方法可以工作,但不是真正优化或不是真正可读的。 我最近遇到了每个开发人员都会喜欢的解决方案。

String nameWithProperSpacing = StringUtils.normalizeSpace( stringWithLotOfSpaces );

你完成了。 这是一个可读的解。

你应该这样做

String mytext = " hello     there   ";
mytext = mytext.replaceAll("( +)", " ");

把+放在圆括号内。

您可以首先使用String.trim(),然后对结果应用regex replace命令。

如果你已经在你的项目中使用了Guava(19+节),你可能想要使用这个:

CharMatcher.whitespace().trimAndCollapseFrom(input, ' ');

或者,如果你需要删除空格符号(或U+0020,查看更多空白),使用:

CharMatcher.anyOf(" ").trimAndCollapseFrom(input, ' ');

流版本,过滤空格和制表符。

Stream.of(str.split("[ \\t]")).filter(s -> s.length() > 0).collect(Collectors.joining(" "))