2010-03-03 15 views
7

स्ट्रिंग सरणी को int arrays में कनवर्ट करने के लिए एक तरीका है जितना आसान सी # में एक स्ट्रिंग को पार्स करना आसान है।सी # स्ट्रिंग [] int []

int a = int.Parse(”123”); 
int[] a = int.Parse(”123,456”.Split(’,’)); // this don't work. 

मैं इस कार्यशीलता अपने आप को जोड़ने के लिए पूर्णांक वर्ग के लिए विस्तार तरीकों का उपयोग कर की कोशिश की है, लेकिन वे स्थिर नहीं हो जाते।

इस तेजी से और अच्छा कैसे करें इस पर कोई विचार है?

+1

LINQ आप में ऐसा करने की अनुमति चाहिए बदलने की जरूरत नहीं है तो है एक लाइन या लैम्ब्डा अभिव्यक्तियां। –

+2

क्या आपने यह पूछने से पहले इस साइट को खोजने का प्रयास किया था? –

उत्तर

17

यह LINQ क्वेरी यह करना चाहिए:

strArray.Select(s => int.Parse(s)).ToArray() 
8
int[] a = Array.ConvertAll("123,456".Split(','), s => Int32.Parse(s)); 

ठीक करना चाहिए। यदि आप अपवाद नहीं चाहते हैं तो आप TryParse का उपयोग करने के लिए लैम्ब्डा को संशोधित कर सकते हैं।

+1

'Array.ConvertAll' निश्चित रूप से LINQy' ToArray() 'की तुलना में कम पुनर्वितरण की आवश्यकता है। ध्यान दें कि इस मामले में, आपको लैम्ब्डा की भी आवश्यकता नहीं है, आप 'Int32.Parse' को 'ConvertAll' के दूसरे पैरामीटर के रूप में पास कर सकते हैं। –

3
”123,456”.Split(’,’).Select(s => int.Parse(s)).ToArray(); 
6
int[] a = "123,456".Split(’,’).Select(s => int.Parse(s)).ToArray(); 
3

इस का उपयोग करें:

"123,456".Split(',').Select(s => int.Parse(s)).ToArray() 
3

मुझे लगता है, इस तरह:

string[] sArr = { "1", "2", "3", "4" }; 
int[] res = sArr.Select(s => int.Parse(s)).ToArray(); 
2

यहाँ विस्तार विधि है। यह स्ट्रिंग पर किया जाता है, क्योंकि आप स्ट्रिंग में स्थिर फ़ंक्शन नहीं जोड़ सकते हैं।

public static int[] ToIntArray(this string value) 
{ 
    return value.Split(',') 
     .Select<string, int>(s => int.Parse(s)) 
     .ToArray<int>(); 
} 

यहाँ कैसे आप इसका इस्तेमाल

string testValue = "123, 456,789"; 

int[] testArray = testValue.ToIntArray(); 

इसका मतलब यह है कि आप पर विभाजित करना चाहते हैं ',' आप ToIntArray

+2

बहुत बढ़िया, बस जो मैं खोज रहा था। धन्यवाद! –

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