不使用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
相关产品推荐
相关产品推荐

