2015-09-02 4 views
0

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

"50000007;Bxxxx Kxxx - Sxxx Fx. xxxx;423283; ;423292;1; ;700000004;T;"

и я использую этот код

x = dt.Rows.Count 
    For i As Integer = 0 To x - 1 
     Dim Data As String = dt.Rows(i).Item(0) 
     Dim words As String() = Data.Split(New Char() {";"c}) 
     bilgi.Rows.Add(words) 
    Next 

и его работы для тысяч строк, но если строка приходит с запятой, например

"50000007;Bxxxx**,** Kxxx - Sxxx Fx. xxxx;423283; ;423292;1; ;700000004;T;"

после того, как раскололся только мой массив строк ("50000007","Bxxxx"), а остальное исчезло и продолжается до следующей строки.

Может ли кто-нибудь помочь мне решить эту проблему?

+1

Как вы загрузив файл CSV в таблицу данных? То, как вы его используете, 'String.split' будет разделяться только точкой с запятой. Если «остальное ушло и продолжается до следующей строки», то «остальное» уже помещается в следующую строку, прежде чем вы даже войдете в цикл 'for'. – Groo

+1

Это * не *, как работает «Сплит». Пожалуйста, напишите * полный и минимальный * пример - то есть * не * вовлекайте таблицу данных. Как бы то ни было, вы, вероятно, загружаете CSV, используя ',' в качестве разделителя полей, в результате чего первый столбец содержит первые две строки вместо всей строки. –

+0

. Я использую этот код для чтения csv-файла 'Dim sConn =" Provider = Microsoft .Jet.OLEDB.4.0; Источник данных = "& yol & _ "; Расширенные свойства = 'текст; HDR = Да; FMT = Разграничено (;)'; " Dim dt As New DataTable() '"; Расширенные свойства =" "текст; HDR = Да; FMT = Разграничено (;)" ";" Использование адаптироваться как новый OleDbDataAdapter ("SELECT * FROM [" & dosya & "]", sConn) adapt.Fill (dt) End Использование' – Murat

ответ

2

Отказ от ответственности: Это больше комментариев, чем ответ, так пожалуйста обработайте как таковой

Я думаю, что код размещен не полный, потому что простой тест не дает вывод, который вы описали:

Dim Data As String = "50000007;Bxxxx**,** Kxxx - Sxxx Fx. xxxx;423283; ;423292;1;   ;700000004;T;" 
    Dim words As String() = Data.Split(New Char() {";"c}) 
    For Each word In words 
     Debug.WriteLine("word:" & word) 
    Next 

Выходы:

word:50000007 
word:Bxxxx**,** Kxxx - Sxxx Fx. xxxx 
word:423283 
word: 
word:423292 
word:1 
word:   
word:700000004 
word:T 
word: 
+1

Я не пробовал строку, я всегда читал из файла csv с помощью OleDb с помощью «Provider = Microsoft.Jet.OLEDB.4.0; Источник данных =« & path & »; Расширенные свойства = 'текст; HDR = Да; FMT = разделители (;) ';» строка подключения. Возможно, я ошибаюсь при чтении файла csv. – Murat