2014-02-14 3 views
1

Я пытаюсь разбить эту строку " "109491: Navy/Red115138: Navy/Light Grey" в Colour Code и colour name. Числовое значение - это цветовой код, а строка, содержащая \, - это имя цвета. Я пробовал это регулярное выражение "(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)", но он не работал по желанию. Несколько раз он возвращается в Colour Code.Сплит-строка и цифры

Благодаря

+0

Что вы имеете в виду - иногда? За какой вклад конкретно? – cacau

+0

добровольно помещает строку, которую вы хотите разделить. –

+0

На самом деле, я получаю вышеупомянутую строку из webservice, но мне нужно сохранить цветовой код и имя цвета отдельно по определенной причине. – Nasir

ответ

1

Попробуйте что-то вроде этого:

(?:(\d+):\s([^\d]+))+? 

Это будет фиксировать номера и текст в виде отдельных захватах.

Например:

enter image description here

+0

Откуда взялся снимок экрана, который вы опубликовали? – Jojo

+0

@Jojo Бесплатный инструмент для тестирования регулярных выражений Я написал - http://www.netregex.com/ – Lloyd

+0

Это приложение выглядит круто, спасибо. – Jojo

1

Просто используйте:

(\d+[^\d]+) 

Это "выбрать номера .. то все остальное, что не является числом". Так как это соответствует:

109491: Navy/Red115138: Navy/Light Grey 
|______________||______________________| 

например:

var str = "109491: Navy/Red115138: Navy/Light Grey"; 
var matches = new List<string>(); 

foreach (Match match in Regex.Matches(str, @"(\d+[^\d]+)")) { 
    matches.Add(match.Value); 
} 

// matches[0] = 109491: Navy/Red 
// matches[1] = 115138: Navy/Light Grey 
Смежные вопросы