Java 如何读取txt并通过管道对其进行分隔
我有一个txt文件,格式如下:Java 如何读取txt并通过管道对其进行分隔,java,bufferedreader,Java,Bufferedreader,我有一个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
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
方法的字符串应该是正则表达式,您需要使用行。split(“\\\\”)
在正则表达式中,管道符号具有特殊的含义(它的工作方式类似于或运算符),所以需要通过反斜杠将其转义。在java字符串中,文字反斜杠有特殊的含义,因为它是跟在字符后面的转义符,所以这里有两个反斜杠。结果字符串实际上只是\\124;
试试这个:
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()
特定值来删除不必要的空格。因为传递给split
方法的字符串应该是正则表达式,您需要使用lines.split(\\\\;”)
在正则表达式中,管道符号具有特殊的含义(它的工作方式类似于或运算符),所以需要通过反斜杠将其转义。在java字符串中,文字反斜杠有特殊的含义,因为它是跟在字符后面的转义符,所以这里有两个反斜杠。结果字符串实际上只是\\124;
试试这个:
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()
特定值来删除不必要的空格。split()
对字符串调用将返回字符串数组。当您执行行时。拆分(“\r”,6)代码>并且不将其分配给任何对象,对split的调用不会执行任何操作,因为它返回的值丢失。while循环很可能是无止境的,因为行仍然保存br.readLine()
的结果,因此永远不会为空。我不知道你为什么要检查你的字符串长度是否大于7。如果文件有多行,循环应该包含该行的读取,否则您将只读取一行。我尝试先通过换行符“\n”进行迭代,然后通过管道分隔进行迭代,以便访问对象,您是否知道如何解决您在注释中开始的问题@Justanotherdeveloper调用split(“|”)代码>在保存你所读行的值的字符串上,你会得到你想要的东西..拆分(“|”)Don work men xd我已经尝试过@justanotherdeveloper检查我对上一条评论所做的编辑。如果对字符串调用“\\\\”split()
将其拆分,则该函数将返回字符串数组。当您执行行时。拆分(“\r”,6)代码>并且不将其分配给任何对象,对split的调用不会执行任何操作,因为它返回的值丢失。while循环很可能是无止境的,因为行仍然保存br.readLine()
的结果,因此永远不会为空。我不知道你为什么要检查你的字符串长度是否大于7。如果文件有多行,循环应该包含该行的读取,否则您将只读取一行。我尝试先通过换行符“\n”进行迭代,然后通过管道分隔进行迭代,以便访问对象,您是否知道如何解决您在注释中开始的问题@Justanotherdeveloper调用split(“|”)代码>在保存你所读行的值的字符串上,你会得到你想要的东西..拆分(“|”)Don work men xd我已经尝试过@justanotherdeveloper检查我对上一条评论所做的编辑。如果按“\\\\”拆分,则该选项有效