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

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

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

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

核心思路

  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 "
    }
}

关键点说明

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

适用场景

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

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

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

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

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

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/24356.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月14日 22:59
下一篇 2025年6月14日 23:04

相关推荐

  • Java如何添加线程池?

    在Java中添加线程池使用java.util.concurrent.ExecutorService接口,通过Executors工厂类创建(如newFixedThreadPool)或直接构造ThreadPoolExecutor实例,提交任务用execute()或submit()方法,最后需调用shutdown()关闭线程池。

    2025年6月11日
    100
  • Java字符串和数字如何拼接?

    在Java中,字符与数字相加时,字符会隐式转换为对应的Unicode码值(整数),再与数字进行算术运算。’A'(Unicode 65) + 1 = 66,若需拼接为字符串,应使用String.valueOf()或字符串连接符+。

    2025年6月4日
    500
  • Java中怎样设置HTTPS

    在Java中实现HTTPS连接主要使用HttpsURLConnection类,需处理SSL证书验证,可通过自定义TrustManager信任指定证书或忽略验证(不推荐生产环境),也可用SSLContext初始化SSL参数并设置到连接对象,最后处理IO流,注意异常处理和资源关闭。

    2025年6月11日
    000
  • Java中如何正确调用其他类的变量?

    在Java中调用其他类的变量需根据访问权限处理:若变量为public,可通过对象实例直接访问;若为私有变量,需在该类中定义public的getter方法供外部调用,静态变量可直接用类名访问,非静态变量需先实例化对象再通过对象引用访问。

    2025年5月29日
    300
  • Java源代码封装方法步骤

    将Java源代码封装主要通过定义类、使用访问控制修饰符(如private/public)隐藏实现细节,仅暴露必要接口,核心步骤包括:创建类封装数据与行为,通过方法提供访问控制,最终打包为JAR文件实现代码复用。

    2025年6月8日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN