2010-03-02 112 views
10

如何将字符串(如“Mar10”)拆分为C#中的“Mar”和“10”?字符串的格式将始终是字母和数字,因此我可以使用数字的第一个实例作为分隔字符串的指示符。如何在C#中根据字母和数字拆分字符串

+1

你并不总是只有三个字,是吗? Dec12,Jan5,Jul17 ... – tanascius 2010-03-02 09:44:57

+0

是的,在这种情况下,我这样做。日期3字符,年份2字符。 – Addie 2010-03-05 17:56:06

回答

14

你可以这样做:

var match = Regex.Match(yourString, "(\w+)(\d+)"); 
var month = match.Groups[0].Value; 
var day = int.Parse(match.Groups[1].Value); 
3
char[] array = "Mar10".ToCharArray(); 
int index = 0; 
for(int i=0;i<array.Length;i++) 
{ 
    if (Char.IsNumber(array[i]){ 
     index = i; 
     break; 
    } 
} 

指数将表明分裂立场。

5

你不是直接说出来的,但从你的例子看来,你只是试图解析一个日期。

如果这是真的,这个怎么样的解决方案:

DateTime date; 
if(DateTime.TryParseExact("Mar10", "MMMdd", new CultureInfo("en-US"), DateTimeStyles.None, out date)) 
{ 
    Console.WriteLine(date.Month); 
    Console.WriteLine(date.Day); 
} 
1
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]开始,它应该返回MarGroups[2]应该返回10