2012-04-15 5 views
2

В основном моя проблема в этом, мне нужно разобрать текст, где , является разделителем, но ничего в " " цитаты не должны проверяться на разделитель. Это то, для чего нужен метод Scanner.skip? Я бы сам это проверял, но я не понимаю, как написать шаблон регулярного выражения в java, где токен - это что-то среднее между двумя " ". Я также хочу включить любой цитируемый текст в соответствующий токен, который был лимитирован действительным ,.Включить сканер, но игнорировать цитируемый текст?

+0

Похоже, вы пытаетесь p вставьте CSV-файл, найдите любую библиотеку CSV, например http://sourceforge.net/projects/javacsv/ или аналогичную. – Kennet

ответ

2

Я изучил эту проблему некоторое время назад и не нашел достаточно быстрого решения.

В результате, я включил простой пользовательский Струнный разветвитель (который игнорирует разделители между кавычками) в исходный проект с открытым я работаю:

QuoteAwareStringSplitter.java

Например:

public static void main(String[] args) throws IOException 
{ 
    String s = "ads,asdas,das,das, \"ahda,asd,as,d,a\", adsa"; 
    String[] tokens = QuoteAwareStringSplitter.splitLine(s); 
    for (String token : tokens) 
    { 
     System.out.println(token); 
    } 
} 

Отпечатки:

ads 
asdas 
das 
das 
ahda,asd,as,d,a 
adsa 
+0

Я надеялся, что есть способ сделать это, который не включал в себя char char вручную, но если это так, я думаю, что такое решение не так уж плохо. – user1086516

+1

В какой-то момент он должен быть char char. И он абстрагируется от вашего кода, когда вы используете что-то вроде «QuoteIgnorringStringSplitter». – DerMike

+1

Ну, независимо от того, какая библиотека или решение вы выбрали, даже решение на основе регулярных выражений, будет устанавливаться через 'char' by' char' как часть его реализации. Это будет просто скрыто от вас. Регулярные выражения не волшебны ... Редактирование: @DerMike избил меня до этого :) – ulmangt

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