2016-02-10 5 views
-5

У меня строка содержит текст «AA55BB10CC1DD10E123». Я должен разбить строку и поместить ее в поле «Список как текст/значение», напримерРазделить строку на C#

AA | 55

BB | 10

CC | 1

DD | 10

E | 123

Благодаря

+1

Что ваши критерии раскола? Любое количество букв, за которыми следует любое число числовых цифр? –

+2

И что вы пробовали? – lintmouse

+7

Добро пожаловать в StackOverflow! Мы не являемся службами написания кода. Хотя мы будем рады помочь с вашим * конкретным * вопросом, пожалуйста, покажите нам, что вы написали до сих пор, и какую конкретную проблему вы столкнулись. Прочтите [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask) для получения более подробной информации. –

ответ

1

Используя свой волшебный хрустальный шар, я определил, что это ответ, который вы искали!

string[] split = Regex.Matches("AA55BB10CC1DD10E123", @"[A-Z]+\d+") 
    .Cast<Match>() 
    .Select(x => Regex.Match(x.Value, @"[A-Z]+").Value + "|" + Regex.Match(x.Value, @"\d+").Value).ToArray(); 
0

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

List<string> split = Regex("[A-Z]{1}[a-z0-9]*"); 
    split= reg.Matches(InputText).Cast<Match>().Select(m => m.Value).ToList(); 
+0

Нет причин создавать экземпляр списка в вашей первой строке кода, если вы собираетесь просто выбросить его по строке 3. – itsme86

+0

То есть очень верно, было просто показать раскол с помощью Regex. –

2
string text = "AA55BB10CC1DD10E123"; 
var letters = Regex.Split(text,@"\d").Where(t => !string.IsNullOrEmpty(t)); 
var digits = Regex.Split(text, @"[A-Z]").Where(t => !string.IsNullOrEmpty(t)); 
var myList = letters.Zip(digits, (l, d) => new {l,d}); 
Смежные вопросы