给定一个字符串, 要求去掉首位的空格,同时其他位置的空格合并为一个空格,不用replaceAll
时间: 2024-05-10 08:13:41 浏览: 102
可以使用以下代码实现:
```
public static String mergeSpaces(String str) {
if (str == null || str.isEmpty()) {
return str;
}
int start = 0;
int end = str.length() - 1;
// 去除首部空格
while (start <= end && str.charAt(start) == ' ') {
start++;
}
// 去除尾部空格
while (start <= end && str.charAt(end) == ' ') {
end--;
}
StringBuilder sb = new StringBuilder();
boolean spaceFlag = false;
for (int i = start; i <= end; i++) {
char c = str.charAt(i);
if (c == ' ' && !spaceFlag) {
spaceFlag = true;
sb.append(c);
} else if (c != ' ') {
spaceFlag = false;
sb.append(c);
}
}
return sb.toString();
}
```
这个方法的实现原理比较简单,首先使用两个指针从字符串的两端向中间扫描,去除首尾的空格。然后遍历字符串的每个字符,如果当前字符是空格,而且前面没有出现过空格,就将该空格添加到结果字符串中,否则忽略该空格;如果当前字符不是空格,就将该字符添加到结果字符串中。在遍历过程中需要使用一个标志变量(spaceFlag)记录前面是否已经出现过空格。
阅读全文