Разделяне с Regex - c #, регенериране

Искам да разделям струни, подобни на тези abc123, abcdefgh12 или a123456 в букви и цифри, така че резултатът да бъде {"abc", "123"} и т.н.

Какъв е най-простият начин да го направите в C # 4.0? Искам да го направя с един реге.

Отговори:

1 за отговор № 1
splitArray = Regex.Split(myString, @"(?<=p{L})(?=p{N})");

Редовен израз за разделяне на низ и номер


1 за отговор № 2

Защо регекс?

    static readonly char[] digits = {"0","1","2","3","4","5","6","7","8","9"};
....
string s = "abcdefgh12", x = s, y = "";
int i = s.IndexOfAny(digits);
if (i >= 0) {
x = s.Substring(0, i);
y = s.Substring(i, s.Length - i);
}

1 за отговор № 3

В допълнение към Марк Гравел, прочетете http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html .

Какъв е най-простият начин да го направите в C # 4.0? Искам да го направя с един реге.

Това е практически оксиморон в твоя случай. Най-лесният начин за разделяне по фиксиран модел не е с регекси.


1 за отговор № 4

Освен ако не липсвам нещо, това трябва да направи трик ... ([a-z]*)([0-9]*)


1 за отговор № 5

"Използват се само числа или само букви" [a-zA-Z]*|[0-9]*, Всичко, което трябва да направите, е да търсите всички съвпадения на този регулярен израз в низа. Имайте предвид, че не-буквено-цифровите знаци няма да се връщат, но все пак ще разделим струните (така "123-456" ще добие { "123", "456"}).

РЕДАКТИРАНЕ: Тълкувал си въпроса ви като заявяващ товавашите струни могат да бъдат последователност от букви и цифри във всякакъв ред - ако вашият низ е само едно или повече букви, последвани от един или повече номера, не е необходим регулярен израз: потърсете първата цифра и разделете низа.


-1 за отговор № 6

Можете да създадете група за лейтери и една за номера. използвайте това ръководство за допълнителна информация: http://www.regular-expressions.info/reference.html HTH!