猿问

扩大数字范围

我正在尝试解决困扰我一段时间的问题。我创建了一个小型解析器,它读取.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=LABEL

0900.018-029=LABEL

现在范围介于两者之间,我还必须确保“0900”和“=label”随着数字的扩展而重复,例如:


0900.013=LABEL

0900.014=LABEL

0900.015=LABEL

0900.016=LABEL and so on...

并将其存储回ArrayList.


我不想依赖第三方库。这个你能帮我吗。


墨色风雨
浏览 90回答 1
1回答

米脂

使用正则表达式解析范围,然后循环解析的值。需要进行一些微调,但我认为这应该可以帮助您开始。&nbsp; &nbsp; Pattern rangePattern = Pattern.compile("([0-9]+)\\.([0-9]+)-([0-9]+)=(.*)$");&nbsp; &nbsp; Matcher rangeMatcher = rangePattern.matcher("0900.13-17=First label");&nbsp; &nbsp; if (rangeMatcher.matches()) {&nbsp; &nbsp; &nbsp; &nbsp; String prefix = rangeMatcher.group(1);&nbsp; &nbsp; &nbsp; &nbsp; int start = Integer.parseInt(rangeMatcher.group(2));&nbsp; &nbsp; &nbsp; &nbsp; int end = Integer.parseInt(rangeMatcher.group(3));&nbsp; &nbsp; &nbsp; &nbsp; String label = rangeMatcher.group(4);&nbsp; &nbsp; &nbsp; &nbsp; for (int r = start; r < end; r++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(prefix + "." + r + "=" + label);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }创建一次模式,然后每次通过循环获取新的匹配器。结果:0900.13=First label0900.14=First label0900.15=First label0900.16=First label
随时随地看视频慕课网APP

相关分类

Java
我要回答