gpt4 book ai didi

java - 解析用引号引起来的逗号分隔值

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:40:14 26 4
gpt4 key购买 nike

我正在尝试仅使用标准 Java 库来解析用引号引起来的逗号分隔值(我知道这一定是可能的)

例如 file.txt 的每一行都包含一个新行

"Foo","Bar","04042013","04102013","Stuff"
"Foo2","Bar2","04042013","04102013","Stuff2"

然而,当我用我目前编写的代码解析文件时:

import java.io.*;
import java.util.Arrays;
public class ReadCSV{

public static void main(String[] arg) throws Exception {

BufferedReader myFile = new BufferedReader(new FileReader("file.txt"));

String myRow = myFile.readLine();
while (myRow != null){
//split by comma separated quote enclosed values
//BUG - first and last values get an extra quote
String[] myArray = myRow.split("\",\""); //the problem

for (String item:myArray) { System.out.print(item + "\t"); }
System.out.println();
myRow = myFile.readLine();
}
myFile.close();
}
}

但是输出是

"Foo    Bar     04042013        04102013        Stuff"

"Foo2 Bar2 04042013 04102013 Stuff2"

代替

Foo    Bar     04042013        04102013        Stuff

Foo2 Bar2 04042013 04102013 Stuff2

我知道我在 Split 上出错了,但我不确定如何修复它。

最佳答案

在进行拆分之前,只需使用下行删除 myRow 变量中的第一个双引号和最后一个双引号。

myRow = myRow.substring(1, myRow.length() - 1);

(更新)同时检查 myRow 是否不为空。否则上面的代码会导致异常。例如,下面的代码检查 myRow 是否不为空,然后仅从字符串中删除双引号。

if (!myRow.isEmpty()) {
myRow = myRow.substring(1, myRow.length() - 1);
}

关于java - 解析用引号引起来的逗号分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16141458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com