Как разделить строку в C # на основе букв и цифр - PullRequest
10 голосов
/ 02 марта 2010

Как я могу разбить строку, такую ​​как «Mar10» на «Mar» и «10» в c #? Формат строки всегда будет буквами, а не цифрами, поэтому я могу использовать первый экземпляр числа в качестве индикатора, где нужно разбить строку.

Ответы [ 4 ]

14 голосов
/ 02 марта 2010

Вы можете сделать это:

var match = Regex.Match(yourString, "(\w+)(\d+)");
var month = match.Groups[0].Value;
var day = int.Parse(match.Groups[1].Value);
5 голосов
/ 02 марта 2010

Вы не говорите это прямо, но из вашего примера кажется, что вы просто пытаетесь разобрать дату.

Если это правда, как насчет этого решения:

DateTime date;
if(DateTime.TryParseExact("Mar10", "MMMdd", new CultureInfo("en-US"), DateTimeStyles.None, out date))
{
    Console.WriteLine(date.Month);
    Console.WriteLine(date.Day);
}
3 голосов
/ 02 марта 2010
char[] array = "Mar10".ToCharArray();
int index = 0;
for(int i=0;i<array.Length;i++)
{
   if (Char.IsNumber(array[i]){
      index = i;
      break;
   }
}

Индекс будет указывать позицию разделения.

1 голос
/ 01 апреля 2016
var match = Regex.Match(yourString, "([|A-Z|a-z| ]*)([\d]*)");
var month = match.Groups[1].Value;
var day = int.Parse(match.Groups[2].Value);

Я попробовал ответ Конрада выше, но он не совсем сработал, когда я ввел его в RegexPlanet. Также Groups[0] возвращает всю строку Mar10. Вы хотите начать с Groups[1], который должен вернуть Mar, а Groups[2] должен вернуть 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...