Как разбить строку на С# на основе букв и цифр

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

Ответ 1

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

var match = Regex.Match(yourString, "(\w+)(\d+)");
var month = match.Groups[0].Value;
var day = int.Parse(match.Groups[1].Value);

Ответ 2

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

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

DateTime date;
if(DateTime.TryParseExact("Mar10", "MMMdd", new CultureInfo("en-US"), DateTimeStyles.None, out date))
{
    Console.WriteLine(date.Month);
    Console.WriteLine(date.Day);
}

Ответ 3

char[] array = "Mar10".ToCharArray();
int index = 0;
for(int i=0;i<array.Length;i++)
{
   if (Char.IsNumber(array[i]){
      index = i;
      break;
   }
}

Указатель укажет позицию разделения.

Ответ 4

var match = Regex.Match(yourString, "([|A-Z|a-z| ]*)([\d]*)");
var month = match.Groups[1].Value;
var day = int.Parse(match.Groups[2].Value);

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