2010-04-27 2 views
4
Regex rx = new Regex(@"[+-]"); 
    string[] substrings = rx.Split(expression); 

выражения = «-9a3dcbh-3bca-4ab4cf-3hc» // Это Ипуть строка Я хочу разделить эту строку между + или -. Мой VS отладчик показывает подстроки массив как это: подстроки [0] = NULL // ??? Почему подстроки [1] = 9a3dcbh подстроки [2] = 3bca подстроки [3] = 4ab4cf подстроки [4] = 3hcСтранно, Regex.Split Метод соответствует один нулевому элементу

Почему первый элемент arry null, это потому, что я сопоставляю + -, и в моей строке ввода нет?

+0

Correction, первый элемент не является нулевым, то «» – dontoo

+0

В String.split вы можете использовать опцию RemoveEmptyEntries, но я не» t верю, что Regex.Split имеет этот параметр. – Brandi

ответ

1

Поскольку split исключает разделитель и возвращает строку до и после разделителей, в этом случае перед разделителем нет символов, поэтому первым значением является пустая строка.

+0

Я вижу, спасибо – dontoo

0

C# Regex.Split - Subpattern returns empty strings. Первый ответ имеет большое объяснение

Вы можете попробовать это:

 string split_string = "-3243+324-32-2343"; 
    string[] nums = split_string.Split(new char[] { '-', '+' }, 
             StringSplitOptions.RemoveEmptyEntries); 
+0

Я сделал что-то подобное – dontoo

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