Java 如何在读取CSV时删除双引号
输出为Java 如何在读取CSV时删除双引号,java,opencsv,Java,Opencsv,输出为 public class CSVTeast { public static void main(String[] args) { CSVTeast obj = new CSVTeast(); obj.run(); } public void run() { String csvFile = "D:\\text.csv"; BufferedReader br = null; St
public class CSVTeast {
public static void main(String[] args) {
CSVTeast obj = new CSVTeast();
obj.run();
}
public void run() {
String csvFile = "D:\\text.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = "~";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] csvRead = line.split(cvsSplitBy);
System.out.println("Value [date= " + csvRead[5]
+ " , name=" + csvRead[9]+"]");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Done");
}
}
预期产量
Value [date= "POLICY_CHANGE_EFFECTIVE_DATE" , name="AGENCY_NAME"]
Value [date= "2014-04-01" , name="USI INSURANCE SERVICES]--this value stated with double qoutes but not end with same .
您可以尝试通过String.replace()方法传递值 所以你的代码应该是:
Value [date= POLICY_CHANGE_EFFECTIVE_DATE , name=AGENCY_NAME]
Value [date= 2014-04-01 , name=USI INSURANCE SERVICES]
Java有一个很好的CSV阅读器,可以为您处理这一切
如果您的项目是maven,它有一个maven包,否则您可以在那里下载JAR。如果QOUTEMARK位于每个CSV行的开头,您可以执行以下操作:
public class CSVTeast {
public static void main(String[] args) {
CSVTeast obj = new CSVTeast();
obj.run();
}
public void run() {
String csvFile = "D:\\text.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = "~";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String[] csvRead = line.split(cvsSplitBy);
System.out.println("Value [date= " + csvRead[5].replace("\"","")
+ " , name=" + csvRead[9].replace("\"","")+"]");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Done");
}
}
这将删除该特定字符串的第一个和最后一个字符。然后需要将结果存储在某个位置或打印出来。检查字符串是否以双引号开头也很重要,否则代码将开始删除CSV值的第一个字符。我在我的一个应用程序的代码中这样做,我的CSV值出现在rowData[1]中,有时有双引号,有时没有,具体取决于值字符串中的字数
csvRead[5].substring(1, csvRead[5].length()-1)
你也可以发布csv文件的内容吗?@Anandv,如果不太麻烦的话,对答案进行一次向上投票会很有帮助,谢谢:)有些值以引号开头和结尾,有些值以引号结尾,有些值以qoutte开头
String item = (String.valueOf(rowData[1].charAt(0)).equals("\"") ? rowData[1].substring(1, rowData[1].length() - 1) : rowData[1]);