为了账号安全,请及时绑定邮箱和手机立即绑定

扩大数字范围

扩大数字范围

墨色风雨 2024-01-05 16:26:17
我正在尝试解决困扰我一段时间的问题。我创建了一个小型解析器,它读取.ini文件,然后将数据存储在ArrayList. 但是,我被以下代码片段困住了:while (!(sCurrentLine.equals("[End]"))) {    formats.add(sCurrentLine);    for (int i = 0; formats.size() > 0; i++) {    }    sCurrentLine = br.readLine();}formats现在这是我必须向类型添加值的地方ArrayList。将像这样添加的值:0900.013-017=LABEL0900.018-029=LABEL现在范围介于两者之间,我还必须确保“0900”和“=label”随着数字的扩展而重复,例如:0900.013=LABEL0900.014=LABEL0900.015=LABEL0900.016=LABEL and so on...并将其存储回ArrayList.我不想依赖第三方库。这个你能帮我吗。
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

使用正则表达式解析范围,然后循环解析的值。需要进行一些微调,但我认为这应该可以帮助您开始。


    Pattern rangePattern = Pattern.compile("([0-9]+)\\.([0-9]+)-([0-9]+)=(.*)$");

    Matcher rangeMatcher = rangePattern.matcher("0900.13-17=First label");


    if (rangeMatcher.matches()) {


        String prefix = rangeMatcher.group(1);

        int start = Integer.parseInt(rangeMatcher.group(2));

        int end = Integer.parseInt(rangeMatcher.group(3));

        String label = rangeMatcher.group(4);


        for (int r = start; r < end; r++) {

            System.out.println(prefix + "." + r + "=" + label);

        }

    }

创建一次模式,然后每次通过循环获取新的匹配器。


结果:


0900.13=First label

0900.14=First label

0900.15=First label

0900.16=First label


查看完整回答
反对 回复 2024-01-05
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信