Искам да разделям струни, подобни на тези abc123
, abcdefgh12
или a123456
в букви и цифри, така че резултатът да бъде {"abc", "123"}
и т.н.
Какъв е най-простият начин да го направите в C # 4.0? Искам да го направя с един реге.
Отговори:
1 за отговор № 1splitArray = 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!