在Java中寻找快速、简单的方法来更改此字符串
" hello there "
变成了这样的东西
"hello there"
在这里我用一个空格替换了所有这些多个空格,除了我还希望字符串开头的一个或多个空格消失。
像这样的事情能让我在一定程度上做到
String mytext = " hello there ";
mytext = mytext.replaceAll("( )+", " ");
但事实并非如此。
在Java中寻找快速、简单的方法来更改此字符串
" hello there "
变成了这样的东西
"hello there"
在这里我用一个空格替换了所有这些多个空格,除了我还希望字符串开头的一个或多个空格消失。
像这样的事情能让我在一定程度上做到
String mytext = " hello there ";
mytext = mytext.replaceAll("( )+", " ");
但事实并非如此。
当前回答
管柱。替换(“s+”,“”);
其他回答
到目前为止,已经提供了很多正确答案,我看到了很多赞。然而,上面提到的方法可以工作,但不是真正优化或不是真正可读的。 我最近遇到了每个开发人员都会喜欢的解决方案。
String nameWithProperSpacing = StringUtils.normalizeSpace( stringWithLotOfSpaces );
你完成了。 这是一个可读的解。
这是删除字符串中任何空白的最简单方法。
public String removeWhiteSpaces(String returnString){
returnString = returnString.trim().replaceAll("^ +| +$|( )+", " ");
return returnString;
}
您可以首先使用String.trim(),然后对结果应用regex replace命令。
String str = " hello world"
首先减少空间
str = str.trim().replaceAll(" +", " ");
第一个字母大写,其他字母小写
str = str.substring(0,1).toUpperCase() +str.substring(1,str.length()).toLowerCase();
你好,抱歉耽搁了! 以下是你正在寻找的最佳和最有效的答案:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MyPatternReplace {
public String replaceWithPattern(String str,String replace){
Pattern ptn = Pattern.compile("\\s+");
Matcher mtch = ptn.matcher(str);
return mtch.replaceAll(replace);
}
public static void main(String a[]){
String str = "My name is kingkon. ";
MyPatternReplace mpr = new MyPatternReplace();
System.out.println(mpr.replaceWithPattern(str, " "));
}
所以这个例子的输出将是: 我的名字叫金康。
然而,这个方法也会删除你的字符串可能有的“\n”。如果你不想这样,就用这个简单的方法:
while (str.contains(" ")){ //2 spaces
str = str.replace(" ", " "); //(2 spaces, 1 space)
}
如果你也想去掉开头和结尾的空格,只需添加:
str = str.trim();