杰瑞科技汇

如何用Java去掉字符串中的特定字符串?

去掉所有出现的子字符串(最常见)

这是最直接的理解:从一个主字符串中,移除所有与目标子字符串完全匹配的部分。

如何用Java去掉字符串中的特定字符串?-图1
(图片来源网络,侵删)

核心方法: 使用 String.replace()String.replaceAll()

方法 1:使用 String.replace(CharSequence target, CharSequence replacement)

这个方法会替换掉字符串中所有出现的 target,如果我们想“去掉”它,只需将其替换为一个空字符串 即可。

  • 特点: target 是一个普通的字符串字面量,不需要特殊字符转义。
public class RemoveSubstring {
    public static void main(String[] args) {
        String originalString = "Hello Java, Java is fun, Java is powerful.";
        String substringToRemove = "Java";
        // 使用 replace 方法,将 "Java" 替换为空字符串 ""
        String resultString = originalString.replace(substringToRemove, "");
        System.out.println("原始字符串: " + originalString);
        System.out.println("去掉 '" + substringToRemove + "' 后的字符串: " + resultString);
        // 输出: 原始字符串: Hello Java, Java is fun, Java is powerful.
        // 输出: 去掉 'Java' 后的字符串: Hello ,  is fun,  is powerful.
    }
}

方法 2:使用 String.replaceAll(String regex, String replacement)

这个方法使用正则表达式来匹配要替换的内容,如果我们想替换一个固定的字符串,同样可以将其替换为空字符串 。

  • 特点: regex 是一个正则表达式。substringToRemove 中包含正则表达式中的特殊字符(如 ^ \ [ ] ),你需要对它们进行转义(在前面加 \)。
public class RemoveSubstringWithRegex {
    public static void main(String[] args) {
        String originalString = "The price is $100.50, and the discount is $20.00.";
        String substringToRemove = "$"; // 这是一个正则表达式中的特殊字符
        // 如果直接使用 replaceAll,会报错或产生非预期结果,因为 $ 匹配行尾
        // 所以需要转义,使用 "\\$"
        String resultString = originalString.replaceAll("\\$", ""); // 反斜杠本身在字符串中需要用 "\\" 表示
        System.out.println("原始字符串: " + originalString);
        System.out.println("去掉 '" + substringToRemove + "' 后的字符串: " + resultString);
        // 输出: 原始字符串: The price is $100.50, and the discount is $20.00.
        // 输出: 去掉 '$' 后的字符串: The price is 100.50, and the discount is 20.00.
    }
}

小结:

如何用Java去掉字符串中的特定字符串?-图2
(图片来源网络,侵删)
  • 对于简单的、不含特殊字符的子字符串,replace() 更简单直接。
  • 如果子字符串可能包含特殊字符,或者你本身就打算用正则表达式匹配更复杂的模式,请使用 replaceAll() 并记得转义。

去掉与某个模式匹配的内容(使用正则表达式)

这个场景更强大,我们不需要精确匹配一个字符串,而是匹配一个“模式”,去掉所有数字,或者去掉所有 HTML 标签。

核心方法: String.replaceAll(String regex, String replacement)

public class RemovePattern {
    public static void main(String[] args) {
        String originalString1 = "My phone number is 123-456-7890 and my zip is 90210.";
        // 去掉所有数字 (正则表达式 \d 表示任意数字)
        String result1 = originalString1.replaceAll("\\d", "");
        System.out.println("去掉所有数字: " + result1);
        // 输出: 去掉所有数字: My phone number is  --- and my zip is .
        String originalString2 = "<p>This is a <b>bold</b> text.</p>";
        // 去掉所有 HTML 标签 (正则表达式 <[^>]*> 表示 < 开头,> 中间是任意非 > 的字符)
        String result2 = originalString2.replaceAll("<[^>]*>", "");
        System.out.println("去掉所有 HTML 标签: " + result2);
        // 输出: 去掉所有 HTML 标签: This is a bold text.
    }
}

去掉指定位置和长度的字符串

这个场景是:我知道要去掉的子字符串的起始位置和长度,而不是它的内容。

核心方法: 使用 String.substring(int beginIndex, int endIndex)

如何用Java去掉字符串中的特定字符串?-图3
(图片来源网络,侵删)
public class RemoveByIndex {
    public static void main(String[] args) {
        String originalString = "Hello, beautiful World!";
        // 去掉从索引 7 开始,长度为 9 的子字符串 ("beautiful")
        int startIndex = 7;
        int lengthToRemove = 9;
        // 构建结果 = 前半部分 + 后半部分
        String resultString = originalString.substring(0, startIndex) 
                            + originalString.substring(startIndex + lengthToRemove);
        System.out.println("原始字符串: " + originalString);
        System.out.println("去掉从索引 " + startIndex + " 开始,长度为 " + lengthToRemove + " 的字符串后: " + resultString);
        // 输出: 原始字符串: Hello, beautiful World!
        // 输出: 去掉从索引 7 开始,长度为 9 的字符串后: Hello,  World!
    }
}

从字符串两端去掉特定字符(去除空白符)

这个场景通常指去除字符串开头和结尾的特定字符,最常见的是去除空格、制表符、换行符等空白符。

核心方法:

  • String.trim(): 专门用于去除两端的空白字符(包括空格、制表符 \t、换行符 \n 等)。
  • String.strip(): Java 11 引入,功能与 trim() 类似,但能更好地处理 Unicode 空白字符。
  • String.stripLeading() / String.stripTrailing(): 分别只去除开头或结尾的空白符。
public class TrimString {
    public static void main(String[] args) {
        String stringWithSpaces = "   Hello Java World   \n";
        // 1. 使用 trim() 去除两端所有空白符
        String trimmed = stringWithSpaces.trim();
        System.out.println("使用 trim(): '" + trimmed + "'");
        // 输出: 使用 trim(): 'Hello Java World'
        // 2. 使用 strip() (推荐,尤其在处理国际化文本时)
        String stripped = stringWithSpaces.strip();
        System.out.println("使用 strip(): '" + stripped + "'");
        // 输出: 使用 strip(): 'Hello Java World'
        // 3. 只去除开头的空白符
        String leadingTrimmed = stringWithSpaces.stripLeading();
        System.out.println("使用 stripLeading(): '" + leadingTrimmed + "'");
        // 输出: 使用 stripLeading(): 'Hello Java World   \n'
        // 4. 只去除结尾的空白符
        String trailingTrimmed = stringWithSpaces.stripTrailing();
        System.out.println("使用 stripTrailing(): '" + trailingTrimmed + "'");
        // 输出: 使用 stripTrailing(): '   Hello Java World'
    }
}

总结与推荐

你的目标 推荐方法 示例
去掉所有出现的固定子字符串 original.replace("target", "") "abc123abc".replace("abc", "") -> "123"
去掉所有匹配正则表达式的模式 original.replaceAll("regex", "") "a1b2c3".replaceAll("\\d", "") -> "abc"
去掉指定位置和长度的内容 original.substring(0, start) + original.substring(start + len) "abcdef".substring(0, 1) + "abcdef".substring(3) -> "adef"
去掉字符串两端的空白符 original.trim()original.strip() " text ".trim() -> "text"

根据你的具体需求,选择最合适的方法即可,对于初学者,场景一场景四 是最常用和最重要的。

分享:
扫描分享到社交APP
上一篇
下一篇