英文句子一般都是每个英文单词之间只隔一个空格,开头和末尾没有空格。
思路:
1.去掉首尾空格
2.遍历字符串,判断是否为空格
(1)当前字符不是空格,加入
(2) 当前字符是空格,再判断下一个字符是否是空格,下一个字符是空格,则跳过;不是空格则当前字符是单词之间的空格,加入
上代码
public class Main {
public static void main(String[] args) {
test(" I am code ");
test("I am code");
test(" I am code");
test("I am code ");
}
private static void test(String str){
StringBuilder result = new StringBuilder();
// 去掉首尾的空格
String trimStr = str.trim();
int length = trimStr.length();
for (int i=0;i<length;i++){
char currentStr = trimStr.charAt(i);
// 不是空格,加入
if (currentStr!=' '){
result.append(currentStr);
}
// 是空格,判断下一个字符是否为空格,不为空格则加入,是空格则跳过
if (currentStr==' '&&trimStr.charAt(i+1)!=' '){
result.append(' ');
}
}
System.out.print("result="+result.toString());
System.out.println(" length="+result.length());
}
}
结果
还有一种方法就是利用String里的replaceAll(String regex,String replacement)方法
可以看到使用了正则,则我们可以想到匹配大于等于2的空格字符串替换成1个空格。
private static void test1(String str){
// 匹配大于等于2个空格字符串替换成1个空格
String handleStr = str.replaceAll(" {2,}", " ");
// 去掉首尾的空格
String result = handleStr.trim();
System.out.print("result="+result.toString());
System.out.println(" length="+result.length());
}
参考 https://blog.csdn.net/hongmin118/article/details/78263150