亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

擴大數字范圍

擴大數字范圍

墨色風雨 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現在范圍介于兩者之間,我還必須確?!?900”和“=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 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號