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

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

從文本文件中讀取文本并將其與字段名稱及其值逐行顯示

從文本文件中讀取文本并將其與字段名稱及其值逐行顯示

蠱毒傳說 2021-12-10 12:29:33
我有這個文本文件:1             Juan García12-11-2016                               Reparación caldera 110.502             Eva Blasco05-10-2016                                     Fuga de agua 200.003           Rosa Carreras23-01-2016                                  Cambio de filtro    0.75我需要在控制臺上像這樣顯示它:Code: 1, Client: Juan García, Date: 12-11-2016, Concept: Reparación caldera, Price: 110.50我試過用正則表達式來做,但我通常會出錯,而且我沒有時間正確學習它Pattern p = Pattern.compile(            "^([\\d.]+)\\s+(\\d+)\\s+([\\d.]+)\\s+(.+?)\\s+\\((\\d+)\\)(?:\\s+\\{([^{}]+))?"    );    Matcher m = p.matcher("");    Scanner sc = new Scanner(new File("C:\\Temp\\factura.txt"));    while (sc.hasNextLine())    {        String s = sc.nextLine();        if (m.reset(s).find())        {            System.out.printf("%s %8s %6s%n%s (%s) %s%n%n",                    m.group(1), m.group(2), m.group(3), m.group(4), m.group(5),                    m.start(6) != -1 ? m.group(6) : "");        }    }我用正則表達式和子字符串嘗試了一些東西,但我無法讓它工作,我快要瘋了。任何幫助表示贊賞。
查看完整描述

1 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

試試這個。


public static void main(String[] args) {

        String line="1             Juan García12-11-2016                               Reparación caldera 110.50";


        String amount=line.substring(line.lastIndexOf(' '),line.length());

        String code=line.substring(0,line.indexOf(' '));

        String remaining=line.substring(code.length(),line.lastIndexOf(' '));

        //Juan García12-11-2016                               Reparación caldera

        remaining=remaining.trim();


        Matcher matcher = Pattern.compile("\\d").matcher(remaining);

        matcher.find();

        int i = Integer.valueOf(matcher.group());


        String name=remaining.substring(0,i);

        remaining=remaining.substring(name.length(),remaining.length());

        //12-11-2016                               Reparación caldera

        String date=remaining.split(" ")[0];

        String concept=remaining.substring(date.length(),remaining.length());

        concept=concept.trim();


        System.out.printf("code: "+code+" client:"+name+" Date:"+date+" Concept: "+concept+" Price:"+amount);


}


查看完整回答
反對 回復 2021-12-10
  • 1 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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