Как бы я разделил следующую строку?
test, 7535, '1,830,000', '5,000,000'
Результат должен быть
test
7535
'1,830,000'
'5,000,000'
Я попробую:
Dim S() as string = mystring.split(",")
Но я понимаю,
test
7535
'1
830
000'
'5
000
000'
Спасибо
Ответ 1 · рейтинг 8 · Vinko Vrsalovic
Не анализируйте CSV вручную, если у вас есть удобные доступные качественные библиотеки. Пожалуйста!
Парсинг CSV имеет много потенциальных ловушек, и эта библиотека, согласно моему тестированию, аккуратно решает большинство из них.
Тем не менее, если это разовая задача, а строки всегда такие, как в вашем примере, вы можете использовать регулярное выражение, например так (синтаксис VB.NET может быть неправильным, исправьте):
Dim s as string = "1, 2, '1,233,333', '8,444,555'";
Dim r as Regex = new Regex(",\s");
Dim re() as string = r.Split(s);
Это рассчитано на то, что после разделительной запятой всегда есть пробел и что между запятыми нет пробела. Если это не всегда так, вы можете:
- Сделайте регулярное выражение более сложным (см. здесь чтобы увидеть, насколько грязными могут быть вещи)
- Пользуйтесь библиотекой и будьте счастливее
Ответ 2 · рейтинг 2 · Stefan
Если только для этого примера не нужно использовать регулярное выражение, Split-функция (входит в состав Microsoft.VisualBasic.Strings) может принимать строку в качестве разделителя, поэтому просто введите ", ", чтобы поймать только те запятые, после которых есть пробел:
Dim s As String = "1, 2, '1,233,333', '8,444,555'"
Dim r() As String = Split(s, ", ")