用java解析文本文件,如何删除&引用;

用java解析文本文件,如何删除&引用;,java,regex,parsing,Java,Regex,Parsing,我有一个简单的java代码,可以读取包含双引号的句子的文本csv文件:“sentence1”、“sentence2”、“sentence3”。我想读其中一些句子(例如,第1句和第3句)。我创建了一个缓冲区读取器,使用readLine()然后使用:tokens=fileLine.split(“,”)其中标记是字符串数组 我使用数组索引访问了我感兴趣的句子:tokens[0],tokens[3]。问题是,我只想要不带双引号的句子。但是我的程序用“”保存了句子。如何改进语法分析技术,以便在不使用“”的

我有一个简单的java代码,可以读取包含双引号的句子的文本csv文件:“sentence1”、“sentence2”、“sentence3”。我想读其中一些句子(例如,第1句和第3句)。我创建了一个缓冲区读取器,使用
readLine()
然后使用:
tokens=fileLine.split(“,”)其中标记是字符串数组

我使用数组索引访问了我感兴趣的句子:
tokens[0]
tokens[3]
。问题是,我只想要不带双引号的句子。但是我的程序用“”保存了句子。如何改进语法分析技术,以便在不使用“”的情况下保存句子

那么:

在较新的Java版本中,我认为在Java 5中,您还可以使用:

并避免正则表达式的开销参见
和相关问题

您可以执行以下操作:

s = s.substring(1, s.length()-1);
tokens = s.split("\",\"");
请注意,您的实现解析输入行
“你好,世界”,“第二句话”
作为数组

"Hello
world"
"second sentence"

以上代码仅在行本身不包含(转义)引号时有效。

您可以使用方法
String.replaceAll(regex,replacement)

例如:

String s = "hello world";
s = s.replaceAll("o","X");
//s now equals "hellX wXrld"
在您的情况下,您希望正则表达式为“\”
您的替换项是:“

如果您只想从字符串的开头和结尾删除
,您也可以这样做:

String sentence="\"my sentence\"";
System.out.println(sentence);//out->"my sentence"

sentence = sentence.substring(1,sentence.length()-1);   
System.out.println(sentence);//out->my sentence

作为一个更有趣的解决方案,与其马上拆分,为什么不这样做呢

String inputFromCSV; // This would have the value of what you read from the CSV.
inputFromCSV=inputFromCSV.substring(1,sentence.length()-1); 
String[] tokens = inputFromCSV.split("\",\""); // Essentially ","

事实上,它并没有那么糟糕,只要你的文件保持相同的格式,它就可以工作。

我认为content.replace(“\”,”);也可以工作。如果我错了,请纠正我。@Black植物人-你是对的,我刚刚编辑了答案,但这在旧的Java版本中不可用。请使用csv解析器(有很多,包括开源解决方案)-它将使您的生活更轻松()。
String sentence="\"my sentence\"";
System.out.println(sentence);//out->"my sentence"

sentence = sentence.substring(1,sentence.length()-1);   
System.out.println(sentence);//out->my sentence
String inputFromCSV; // This would have the value of what you read from the CSV.
inputFromCSV=inputFromCSV.substring(1,sentence.length()-1); 
String[] tokens = inputFromCSV.split("\",\""); // Essentially ","