我正在编写一个Java应用程序以将数据从Oracle导出到CSV文件
不幸的是,数据的内容可能非常棘手。分隔符仍然是逗号,但连续的一些数据可能是这样的:
| ID | FN | LN | AGE | COMMENT |
|----------------------------------------------------------------|
| 123 | John | Smith | 39 | I said "Hey, I am 5'10"." |
|----------------------------------------------------------------|
因此,这是该comment
列上的字符串之一:
我说:“我是5‘10”。
别开玩笑了,我需要在Java生成的CSV文件中的excel或开放式办公室中显示上述注释,而又不能妥协,并且当然不能弄乱其他常规的转义符情况(即,常规的双引号和元组中的常规逗号)。我知道正则表达式功能强大,但是在如此复杂的情况下如何实现目标呢?
有几个库。这是两个示例:
阿帕奇共享郎包括一类特殊的逃避或UNESCAPE字符串(CSV,EcmaScript的,HTML,Java和JSON,XML)
org.apache.commons.lang3.StringEscapeUtils
。
转义 为CSV
String escaped = StringEscapeUtils
.escapeCsv("I said \"Hey, I am 5'10\".\""); // I said "Hey, I am 5'10"."
System.out.println(escaped); // “I said “”Hey, I am 5‘10”“.”“”
__从CSV 取消转义
String unescaped = StringEscapeUtils
.unescapeCsv("\"I said \"\"Hey, I am 5'10\"\".\"\"\""); // "I said ""Hey, I am 5'10""."""
System.out.println(unescaped); // I said "Hey, I am 5'10"."
如果使用 OpenCSV ,则无需担心转义或不转义,仅需写或读内容。
FileOutputStream fos = new FileOutputStream("awesomefile.csv");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
CSVWriter writer = new CSVWriter(osw);
...
String[] row = {
"123",
"John",
"Smith",
"39",
"I said \"Hey, I am 5'10\".\""
};
writer.writeNext(row);
...
writer.close();
osw.close();
os.close();
FileInputStream fis = new FileInputStream("awesomefile.csv");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
CSVReader reader = new CSVReader(isr);
for (String[] row; (row = reader.readNext()) != null;) {
System.out.println(Arrays.toString(row));
}
reader.close();
isr.close();
fis.close();
我有如下数据 我正在尝试使用open csv解析csv,在我的csv中,名字可以包含双引号(MAL“COLMHS”)或带逗号的双引号(“SAGAR,TARLE”)或不带双引号的名字。 因此,使用. with IgnoreQuotations(true)我可以解析第一行(MAL"COLMHS),但无法找到解析第二行的解决方案。 我尝试了多个StackOverflow链接的解决方案,但无法解决它们。
问题内容: 我有一个正在编写的脚本,用于将某些字段移至新的数据库,例如 但是如您所见,由于单引号和双引号,查询每次都会中断,是否有解决此问题的方法,例如herdok或类似的东西 问题答案: 为此而制作的。 PHP:mysql_real_escape_string
我正在使用opencsv读取csv文件。有时csv文件中包含单引号或双引号。如何读取它们而不更改csv文件本身中的数据。 现在,如果我用两个单引号替换一个单引号,它工作正常,与双引号相同,用两个替换单个引号,它的工作原理。但我不想碰源文件。 要访问的代码如下: 这样做的结果是跳过下一行(也包含双引号),插入所有奇数行,跳过偶数行 提前谢谢
问题内容: 如果JSON字符串如下,如何转义双引号? 我想对值 TEST中 的次级双引号进行转义。 我已经尝试了以下方法,但是它不起作用。 我想念什么? 问题答案: 它应该是: 首先,我将外部引号更改为单引号,因此它们不会与内部引号冲突。然后,我将反斜杠放在最里面的引号之前,以使其转义。而且我避开了反斜杠,以便按字面意义对待它。 使用JSON函数可以获得相同的结果:
问题内容: 我正在尝试显示双引号,但它显示的是反斜杠之一: 在html中呈现时,显示为。正确的方法是什么? 问题答案: 试试这个: (在引号前只需一个反斜杠())。
我想显示双引号,但它显示了一个反斜杠: 在html中呈现时,它显示为。正确的方法是什么?