You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Java通用方法移除特定字符前后的字符串片段?

解决Java字符串截取特定字符前后部分的问题

原代码问题分析

你的代码逻辑存在两个核心错误:

  • s2.equals("-")是将字符数组和字符串做相等比较,永远返回false,导致循环持续执行到i < s2.length不成立,最终只是删除了字符串的最后一个字符,这就是输出Free Float Factor-FF的原因。
  • 用ArrayUtils.remove循环删除字符的思路完全偏离需求,没必要将字符串转成字符数组处理。

正确实现方案

Java的String类自带的indexOf和substring方法可以轻松实现你的需求,直接基于字符串操作即可,无需转字符数组。下面是通用方法的实现:

1. 移除特定字符之后的部分(保留到该字符,包含它)

public static String removeAfterChar(String input, char target) {
    int index = input.indexOf(target);
    if (index == -1) { // 如果目标字符不存在,返回原字符串
        return input;
    }
    return input.substring(0, index + 1);
}

2. 移除特定字符之前的部分(保留该字符之后的内容)

public static String removeBeforeChar(String input, char target) {
    int index = input.indexOf(target);
    if (index == -1) { // 如果目标字符不存在,返回原字符串
        return input;
    }
    return input.substring(index + 1);
}

测试示例

public static void main(String[] args) {
    String testStr = "Free Float Factor-FFF";
    // 移除'-'之后的部分,输出:Free Float Factor-
    System.out.println(removeAfterChar(testStr, '-'));
    // 移除'-'之前的部分,输出:FFF
    System.out.println(removeBeforeChar(testStr, '-'));
}

补充说明

  • 如果需要处理多个目标字符(比如取最后一个匹配的字符),可以把indexOf换成lastIndexOf即可。
  • 方法中加入了目标字符不存在的判断,避免出现StringIndexOutOfBoundsException。

内容的提问来源于stack exchange,提问作者Pratik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:00:49