2012-06-21 4 views
1

У меня есть простой Java-код, который читает текстовый файл csv, содержащий предложения с двойными кавычками: "предложение1", "предложение2", "предложение3". Я хочу прочитать некоторые из этих предложений (например, предложение 1 и 3). Я создал буферный считыватель и использовал readLine(), а затем использовал: tokens = fileLine.split(",");, где токены - это массив строк.разобрать текстовый файл в java, как удалить ""

Я получил доступ к предложениям, которые меня интересуют, используя индекс массива как: tokens[0], tokens[3]. Проблема в том, что я хочу предложения только без двойных котировок. Но моя программа сохранила предложения с помощью "". Как я могу улучшить технику синтаксического анализа, чтобы я мог сохранять предложения без «?»?

+0

Используйте синтаксический анализатор csv (есть много, включая решения с открытым исходным кодом) - это упростит вашу жизнь (http://stackoverflow.com/questions/200609/can-you-recommend-a-java-library-for -reading-и-возможно, пишущие-CSV-файлы). – assylias

ответ

3

Как насчет String#replaceAll:

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

В новых версиях Java, я думаю, что из Java 5, вы можете использовать String#replace(CharSequence,CharSequence), а также:

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

И избежать накладных расходов на регулярное выражение

+3

Я * думаю * theSentence.replace ("\" "," ") работает также. Исправьте меня, если я ошибаюсь – BlackVegetable

+1

@BlackVegetable - вы правы, я только что отредактировал ответ, но это не доступно в старых версиях Java. – MByD

0

Вы можете сделать следующее:

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

Обратите внимание, что реализация разбирает строку ввода "Hello, world","second sentence" как массив

"Hello 
world" 
"second sentence" 

Приведенный выше код работает только, если ваши линии не содержат (убежали) цитирует себя.

0

Вы можете использовать метод String.replaceAll(regex, replacement).

Например:

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

В вашем случае вы хотите, чтобы ваше регулярное выражение будет: «\»» И ваша замена быть:„“

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 
0

Как более интересное решение, чем что-либо, а не splittin g сразу, почему бы не сделать это?

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

Фактически, это не так уж плохо и будет работать, пока ваш файл сохраняет тот же формат.

Смежные вопросы