从文本文件中读取文本并将其与字段名称及其值逐行显示

我有这个文本文件:


1             Juan García12-11-2016                               Reparación caldera 110.50

2             Eva Blasco05-10-2016                                     Fuga de agua 200.00

3           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) : "");

        }

    }

我用正则表达式和子字符串尝试了一些东西,但我无法让它工作,我快要疯了。


任何帮助表示赞赏。


蛊毒传说
浏览 139回答 1
1回答

慕的地10843

试试这个。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);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java