2016-07-20 2 views
0

Я пытаюсь найти способ разделить строку своими буквами и цифрами, но мне повезло.Разделение текста и целых чисел на массив/список

Пример: У меня есть строка "AAAA000343BBB343"

Я либо необходимости разделить его на 2 значения "AAAA000343" и "BBB343" или в 4 "AAAA""000343""BBB""343"

Любая помощь будет высоко ценится

Спасибо

+2

Regex является вашим другом здесь. –

+1

Что вы пробовали? Поделитесь работой, и мы можем помочь оттуда. Вы не просто хотите решение, но и какую-то помощь, правильно? –

+0

Вы можете объяснить больше о сплите? как вы решаете, где разделить? – elyashiv

ответ

3

Вот RegEx подход разделить вашу строку на 4 значений

string input = "AAAA000343BBB343"; 
string[] result = Regex.Matches(input, @"[a-zA-Z]+|\d+") 
         .Cast<Match>() 
         .Select(x => x.Value) 
         .ToArray(); //"AAAA" "000343" "BBB" "343" 
+0

Спасибо! Это отлично сработало :) Мне действительно нужно больше исследовать регулярные выражения –

2

Значит, вы можете использовать regex

Для

"AAAA000343" и "BBB343"

var regex = new Regex(@"[a-zA-Z]+\d+"); 
var result = regex 
       .Matches("AAAA000343BBB343") 
       .Cast<Match>() 
       .Select(x => x.Value); 

// result outputs: "AAAA000343" and "BBB343" 

Для

4 "АААА" "000343", "ВВВ", "343"

См @fubo ответить

-1

Попробуйте это:

var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)"); 
var match = numAlpha.Match("codename123"); 

var Character = match.Groups["Alpha"].Value; 
var Integer = match.Groups["Numeric"].Value; 
+0

Это займет только первый экземпляр букв и цифр, а не обоих. Вы должны попробовать его с предоставленными данными вместо 'codename123'. Однако хорошее использование названных захватов. – Bobson

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