开发者

java replaceAll and '+' match

I have some code setup to remove extra spaces in between the words of a title

String formattedString = unformattedString.replaceAll(" +"," ");

My understanding of this type of regex is that it will match as many spaces as possible before stopping. However, my strings that are coming out are not changing in any way. Is it possible that it's only matching one space at a time,开发者_如何转开发 and then replacing that with a space? Is there something to the replaceAll method, since it's doing multiple matches, that would alter the way this type of match would work here?


A better approach might be to use "\\s+" to match runs of all possible whitespace characters.

EDIT

Another approach might be to extract all matches for "\\b([A-Za-z0-9]+)\\b" and then join them using a space which would allow you to remove everything except for valid words and numbers.

If you need to preserve punctuation, use "(\\S+)" which will capture all runs of non-whitespace characters.


Are you sure you string is spaces and not tabs? The following is a bit more "aggressive" on whitespace.

String formattedString = unformattedString.replaceAll("\\s+"," ");


all responses should work.

Both:

String formattedString = unformattedString.replaceAll(" +"," ");

or

String formattedString = unformattedString.replaceAll("\\s+"," ");

Maybe your unformattedString is a multiline expression. In that case you can instantiate an Pattern object

String unformattedString = "  Hello \n\r\n\r\n\r     World";
Pattern manySpacesPattern = Pattern.compile("\\s+",Pattern.MULTILINE);
Matcher formatMatcher = manySpacesPattern.matcher(unformattedString);
String formattedString = formatMatcher.replaceAll(" ");
System.out.println(unformattedString.replaceAll("\\s+", " "));

Or maybe unformattedString have special characters in that case you can play with Pattern flags en compile method. Examples:

Pattern.compile("\\s+",Pattern.MULTILINE|Pattern.UNIX_LINES);

or

Pattern.compile("\\s+",Pattern.MULTILINE|Pattern.UNICODE_CASE);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜