在我的CSV中有这样一行:
"Samsung U600 24"","10000003409","1","10000003427"
24
旁边的引号用于表示英寸,而引号旁边的引号用于关闭字段。我正在用fgetcsv
读取行,但是解析器犯了一个错误,并将值读作:
Samsung U600 24",10000003409"
我试着在英寸引号前加一个反斜杠,但我只是在名称中加了一个反斜杠:
Samsung U600 24\"
有没有办法在CSV中正确地转义它,这样值就是Samsung U600 24"
,或者我必须在处理器中对它进行正则表达式?
发布于 2013-07-23 19:19:32
使用两个引号:
"Samsung U600 24"""
发布于 2014-02-05 19:37:23
发布于 2021-10-12 05:32:36
我是用Java写的。
public class CSVUtil {
public static String addQuote(
String pValue) {
if (pValue == null) {
return null;
} else {
if (pValue.contains("\"")) {
pValue = pValue.replace("\"", "\"\"");
}
if (pValue.contains(",")
|| pValue.contains("\n")
|| pValue.contains("'")
|| pValue.contains("\\")
|| pValue.contains("\"")) {
return "\"" + pValue + "\"";
}
}
return pValue;
}
public static void main(String[] args) {
System.out.println("ab\nc" + "|||" + CSVUtil.addQuote("ab\nc"));
System.out.println("a,bc" + "|||" + CSVUtil.addQuote("a,bc"));
System.out.println("a,\"bc" + "|||" + CSVUtil.addQuote("a,\"bc"));
System.out.println("a,\"\"bc" + "|||" + CSVUtil.addQuote("a,\"\"bc"));
System.out.println("\"a,\"\"bc\"" + "|||" + CSVUtil.addQuote("\"a,\"\"bc\""));
System.out.println("\"a,\"\"bc" + "|||" + CSVUtil.addQuote("\"a,\"\"bc"));
System.out.println("a,\"\"bc\"" + "|||" + CSVUtil.addQuote("a,\"\"bc\""));
}
}
https://stackoverflow.com/questions/17808511
复制相似问题