问题描述
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()
特定的值以删除不必要的空格。