2012-07-20 2 views
1

У меня есть строка списка, полная диапазона различных типов данных. Я читаю в списке строки строки в то время, и с каждой строкой я разделить его с помощьюНастройки функции разделения

string[] tableNa = line.Split(',');

это получает все различные части данных в строке, которые разделены запятыми. Однако у меня есть несколько строк, как это:

47,493,'1 = EMPTY, 2 = SEND, 3 = SENDING, 4 = SENT, 5 = NOTSENT. ',0,

и я хотел бы раскол, чтобы не работать в кавычках, так как мне нужно, чтобы сохранить это как один фрагмент данных. Это возможно?

+0

http://stackoverflow.com/questions/6209/split-a-string- игнорирование-цитируемые разделы Ответы могут вам помочь –

ответ

3

Возможно ли это?

Очевидно, это возможно, но не с string.Split и ничего больше.

Если вы хотите разбор CSV, вы должны найти хорошую (возможно, с открытым исходным кодом) библиотеку разбора CSV. Я уверен, что их много, и они, скорее всего, будут более надежными, чем все, что вы , кстати, создают как часть попыток предоставить более конкретную бизнес-ценность.

2

split a comma-separated string with both quoted and unquoted strings

В частности, это (Regex выглядит страшно, я знаю, но его относительно простой):

public void SplitCSV(string input) 
{ 
    Regex csvSplit = new Regex("(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)", RegexOptions.Compiled); 

    foreach (Match match in csvSplit.Matches(input)) 
    { 
     Console.WriteLine(match.Value.TrimStart(',')); 
    } 
} 

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    SplitCSV("111,222,\"33,44,55\",666,\"77,88\",\"99\""); 
} 
Смежные вопросы