解析java中的文本文件,如何删除“”

时间:2012-06-21 15:03:29

标签: java regex parsing

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

我使用数组索引访问了我感兴趣的句子:tokens[0]tokens[3]。问题是,我只希望句子没有双引号。但我的程序用“”保存了句子。如何改进解析技术,以便我可以保存句子而不用“”?

6 个答案:

答案 0 :(得分:3)

String#replaceAll

怎么样?
theSentence = theSentence.replaceAll("\"", "");

在较新的Java版本中,我认为从Java 5开始,您也可以使用String#replace(CharSequence,CharSequence)

theSentence = theSentence.replace("\"", "");

避免正则表达式的开销

答案 1 :(得分:0)

答案 2 :(得分:0)

您可以执行以下操作:

s = s.substring(1, s.length()-1);
tokens = s.split("\",\"");

请注意,您的实现会解析输入行 "Hello, world","second sentence" 作为数组

"Hello
world"
"second sentence"

上述代码仅在您的行不包含(转义)引号时才有效。

答案 3 :(得分:0)

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

例如:

String s = "hello world";
s = s.replaceAll("o","X");
//s now equals "hellX wXrld"

在你的情况下,你希望你的正则表达式是:“\”“ 而你的替代是:“”

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

作为一个有趣的解决方案,而不是立即拆分,为什么不这样做呢?

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 ","

实际上看它,它并没有那么糟糕,并且只要你的文件保持相同的格式就会有效。