当前位置:首页 > 后端开发 > 正文

Java怎么去掉字符串中间的空格?

在Java中去除字符串中间的空格,可使用 replaceAll("\s+", "")方法,该方法通过正则表达式匹配连续空白字符并替换为空字符串,但会同时移除首尾空格,若需保留首尾空格,需先记录首尾空白,处理中间后再拼接。

在Java中去除字符串中间的空格,同时保留开头和结尾的空格,可以通过以下方法实现,本方法将字符串分为三部分处理:开头的连续空格、中间内容(去除空格)、结尾的连续空格,确保高效且符合需求。

Java怎么去掉字符串中间的空格? 第1张

Java怎么去掉字符串中间的空格? 第2张

核心思路

  1. 定位开头和结尾的空格

    遍历字符串开头和结尾,记录连续空格的数量。

  2. 提取中间内容

    获取去除开头和结尾空格后的中间子字符串。

  3. 去除中间空格

    遍历中间部分,跳过空格字符,保留其他字符。

  4. 拼接结果

    将开头空格、处理后的中间内容和结尾空格拼接成最终结果。

完整代码实现

public class StringUtils { public static String removeMiddleSpaces(String str) { if (str == null || str.isEmpty()) { return str; } int len = str.length(); // 1. 计算开头连续空格的数量 int prefixSpaces = 0; for (int i = 0; i < len; i++) { if (str.charAt(i) == ' ') { prefixSpaces++; } else { break; } } // 2. 计算结尾连续空格的数量 int suffixSpaces = 0; for (int i = len - 1; i >= prefixSpaces; i--) { if (str.charAt(i) == ' ') { suffixSpaces++; } else { break; } } // 3. 提取中间部分(不含开头和结尾空格) int middleStart = prefixSpaces; int middleEnd = len - suffixSpaces; String middle = str.substring(middleStart, middleEnd); // 4. 去除中间部分的所有空格 StringBuilder sb = new StringBuilder(); for (int i = 0; i < middle.length(); i++) { char c = middle.charAt(i); if (c != ' ') { sb.append(c); } } String middleWithoutSpaces = sb.toString(); // 5. 拼接最终结果 return str.substring(0, prefixSpaces) + middleWithoutSpaces + str.substring(middleEnd); } }

使用示例

public class Main { public static void main(String[] args) { String input1 = " Hello World "; String output1 = StringUtils.removeMiddleSpaces(input1); System.out.println("结果: "" + output1 + """); // 输出: " HelloWorld " String input2 = " t Java is great! t "; String output2 = StringUtils.removeMiddleSpaces(input2); System.out.println("结果: "" + output2 + """); // 输出: " tJavaisgreat!t " } }

关键点说明

  • 保留两端空格:通过prefixSpaces和suffixSpaces记录开头/结尾的空格数量,确保不被修改。
  • 仅去除中间空格:遍历中间部分时,仅跳过空格字符(),保留制表符(t)等其他字符。
  • 高效处理:使用StringBuilder拼接非空格字符,避免频繁创建字符串对象。
  • 特殊场景:若字符串全为空格,直接返回原字符串。

适用场景

  • 清理用户输入中的多余空格(如表单数据)。
  • 格式化文本输出(保留缩进,去除内容间空格)。
  • 处理日志文件(保留对齐空格,压缩内容)。

本方法时间复杂度为 O(n)(n为字符串长度),空间复杂度 O(n),适用于大多数场景,如需处理其他空白符(如制表符),可调整代码中的字符判断逻辑。

— 由技术团队原创,转载请注明出处。*

Java怎么去掉字符串中间的空格? 第3张

0