Я читаю CSV-файл на VB.net и сохраняю строку в базе данных SQL. Позже в моем коде строка SQL извлекается в приложении, и функция Split используется для получения значений 'field'. Разделение выполняется с использованием запятой в качестве разделителя.
Приложение обрабатывает много других файлов (включая excel), и для всех них используется функция разделения.
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что один из прочитанных мною файлов csv имеет значение поля, которое начинается с «, за которым следуют несколько значений, разделенных запятой, и заканчивается другим». При обычном чтении файла csv каждое из этих значений отдельного поля принимается за отдельное значение. Надеюсь, у меня есть смысл?
Пример строки:
Elker,MissB,"Bus, Taxi, Train, Ferry, Parking, Toll",800253
там, где нужно разделить только 4 столбца, вместо этого они разделяются на 9 столбцов.
Что я хочу сделать, так это заменить запятые после 'Bus' и до 'Toll' на '?' вместо этого.
Я пытался использовать Replace
, включая перегруженный со стартовой позицией, но в итоге он заменяет ВСЕ запятые в строке на «?»
Попытка 1:
If vstrLine(intStartPos) = "," Then
strRetVal = Replace(vstrLine(intStartPos), ",", "?")
end if
, где vstrLine
равно Elker,MissB,"Bus, Taxi, Train, Ferry, Parking, Toll",800253
и intStartPos
является первым экземпляром запятой после "
Возвращает только '?' а не строка с 1 запятой, замененной на '?'
Попытка 2:
If vstrLine(intStartPos) = "," Then
strRetVal = Replace(vstrLine, ",", "?", intStartPos)
end if
Возвращает строку со всеми запятыми, замененными на '?'