如何读取txt并通过管道将其定界

问题描述

我有一个具有以下格式的txt文件

1 | Argentina |Y|POSTAL_C |CAPITAL|STATES

我想转换由“ |”分隔的每个位置,因为它是示例数组中的位置,如下所示:

0 |   1       |2|3        |4      |5
1 | Argentina |Y|POSTAL_C |CAPITAL|STATES

并在数组中对其进行处理

My code

public void ReadFile2() throws IOException {
    String referencePath = "C:\\Users\\Admin\\Desktop\\PRUEBA.txt";
    BufferedReader br;
    br = new BufferedReader(new FileReader(referencePath));

    String lines = br.readLine();
            lines.split("\n",6);

    this.logger.info("Starting...");

    while (lines != null) {
        if (!lines.isEmpty() && lines.length() >7) {
            String[] values = lines.split("|");

            System.out.println(values[0]); ----> should return 1
        }
      lines = br.readLine();
    }
    br.close();


}

感谢您的评论

解决方法

因为您传递给split方法的字符串应该是您需要使用lines.split("\\|")的正则表达式。

在正则表达式中,管道符号具有特殊含义(其作用类似于OR运算符),因此您需要使用反斜杠对其进行转义。在Java字符串中,文字反斜杠具有特殊的含义,因为它在字符后转义,因此您在这里使用了两个反斜杠。结果字符串实际上只是\|

尝试一下:

String test = "1 | Argentina |Y|POSTAL_C |CAPITAL|STATES";
String[] values = test.split("\\|");
for (String value : values) {
   System.out.println(value);
}

这将返回输出:

1
Argentina
Y
POSTAL_C
CAPITAL
STATES

可能您还希望.trim()特定的值以删除不必要的空格。