2010-03-02 10 views
10

मैं "मार्च 10" में "मार्च" और "10" में स्ट्रिंग को कैसे विभाजित कर सकता हूं? स्ट्रिंग का प्रारूप हमेशा अक्षर होगा, इसलिए मैं स्ट्रिंग को विभाजित करने के लिए एक संकेतक के रूप में किसी संख्या के पहले उदाहरण का उपयोग कर सकता हूं।अक्षरों और संख्याओं के आधार पर मैं सी # में स्ट्रिंग कैसे विभाजित करूं

+1

आपके पास हमेशा तीन वर्ण नहीं होते हैं, है ना? दिसंबर 12, जनवरी 5, जुलाई 17 ... – tanascius

+0

हां, इस मामले में मैं करता हूं। तिथि के लिए 3 वर्ण और साल के लिए 2। – Addie

उत्तर

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] से शुरू करना चाहते हैं, जो Mar और Groups[2] वापस लौटना चाहिए 10 वापस करना चाहिए।

संबंधित मुद्दे