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

不使用split等内置方法实现未知长度连字符分隔数字串的分割功能

实现思路

直接用双下标标记数字段的起止位置,全程只用String自带的charAt()、substring()方法即可完成提取,不需要调用你提到的禁用方法:

  • 初始化start变量为0,用来标记当前数字段第一个字符的下标
  • 遍历整个输入字符串的每个下标i:
    • 当charAt(i)等于'-'时,调用substring(start, i)即可拿到从start到i之前的完整数字串,这就是你要提取的单个数字内容
    • 提取完成后把start更新为i + 1,准备记录下一个数字段的起始位置
  • 遍历结束后不要遗漏最后一个数字段:整个字符串末尾没有'-',所以最后要额外调用一次substring(start)拿到最后一段数字
可运行代码示例
import java.util.Scanner;

public class CustomSplit {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 读取整行输入避免空格干扰
        String input = scanner.nextLine();
        scanner.close();
        
        int start = 0;
        int len = input.length();
        for (int i = 0; i < len; i++) {
            if (input.charAt(i) == '-') {
                // 提取当前数字段,这里直接打印演示,可替换为自己的处理逻辑
                String numStr = input.substring(start, i);
                System.out.println("提取到数字:" + numStr);
                start = i + 1;
            }
        }
        // 处理末尾最后一段数字
        String lastNum = input.substring(start);
        System.out.println("提取到数字:" + lastNum);
    }
}
测试验证

用你给出的示例输入10000-20-150-2-12345-2-1-450000-30-2-50测试,会依次输出所有拆分后的数字串,完全符合需求。

如果你需要把数字字符串转为数值类型又不能调用parseInt/valueOf,可以手动遍历数字串的每个字符,用当前字符 - '0'拿到对应位的数值,逐位累加计算即可得到对应的整型数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:24:00