कहें कि मेरे पास 12345 है।सी # में अलग-अलग अंकों में संख्या को कैसे विभाजित करें?
मुझे प्रत्येक नंबर के लिए अलग-अलग आइटम चाहिए। एक स्ट्रिंग या व्यक्तिगत नंबर भी करेगा।
.Split विधि इस के लिए एक अधिभार है?
कहें कि मेरे पास 12345 है।सी # में अलग-अलग अंकों में संख्या को कैसे विभाजित करें?
मुझे प्रत्येक नंबर के लिए अलग-अलग आइटम चाहिए। एक स्ट्रिंग या व्यक्तिगत नंबर भी करेगा।
.Split विधि इस के लिए एक अधिभार है?
कुछ इस तरह काम करेगा, LINQ का उपयोग:
string result = "12345"
var intList = result.Select(digit => int.Parse(digit.ToString()));
यह आपको ints की एक IEnumerable सूची दे देंगे।
आप तार के एक IEnumerable चाहते हैं:
var intList = result.Select(digit => digit.ToString());
ठीक है, एक स्ट्रिंग एक IEnumerable है और यह भी एक इंडेक्सर को लागू करता है, ताकि आप इसे माध्यम से पुनरावृति या सूचकांक द्वारा स्ट्रिंग में प्रत्येक चरित्र संदर्भित कर सकते हैं।
var myString = "12345";
var charArray = myString.ToCharArray(); //{'1','2','3','4','5'}
फिर आप एक स्ट्रिंग के लिए प्रत्येक चार में बदल सकते हैं, या उन्हें बाइट या पूर्णांकों में पार्स:
सबसे तेज़ तरीका क्या आप चाहते हैं शायद एक स्ट्रिंग की विधि ToCharArray() है पाने के लिए। यहाँ ऐसा करने के लिए एक Linq-y तरीका है:
byte[] byteArray = myString.ToCharArray().Select(c=>byte.Parse(c.ToString())).ToArray();
एक छोटी सी अधिक performant आप ASCII/यूनिकोड तार उपयोग कर रहे हैं:
byte[] byteArray = myString.ToCharArray().Select(c=>(byte)c - 30).ToArray();
कि कोड केवल कार्य करेगा जब आप प्रत्येक कि सुनिश्चित कर रहे हैं तत्व एक संख्या है; अन्यथा पार्सिंग एक अपवाद फेंक देगा। एक सरल रेगेक्स जो यह सत्यापित करेगा वह सत्य है "^ \ d + $" (एक पूर्ण स्ट्रिंग से मेल खाता है जिसमें एक या अधिक अंक वर्ण होते हैं), Regex.IsMatch() स्थिर विधि में उपयोग किया जाता है।
यहाँ कुछ कोड है कि आप मदद कर सकता है। स्ट्रिंग्स
string numbers = "12345";
int[] intArray = new int[numbers.Length];
for (int i=0; i < numbers.Length; i++)
{
intArray[i] = int.Parse(numbers[i]);
}
दूसरी-से-आखिरी पंक्ति में त्रुटि होती है। 'संख्याओं' के साथ '[i]' शामिल न करें। –
आप बस कर सकते हैं वर्णों की एक सरणी के रूप में इलाज किया जा सकता:
"123456".Select(q => new string(q,1)).ToArray();
, पूर्णांकों का एक गणनीय है करने के लिए टिप्पणी अनुरोध के अनुसार, आप:
"123456".Select(q => int.Parse(new string(q,1))).ToArray();
यह थोड़ा कमजोर है क्योंकि यह मानता है कि स्ट्रिंग में वास्तव में संख्याएं होती हैं।
'IENumerable
मैं मॉड्यूलस और लूप का उपयोग करता हूं।
int[] GetIntArray(int num)
{
List<int> listOfInts = new List<int>();
while(num > 0)
{
listOfInts.Add(num % 10);
num = num/10;
}
listOfInts.Reverse();
return listOfInts.ToArray();
}
यह करने का एक अच्छा तरीका है। लेकिन यह शुरुआती शून्य iee ** ** ** 123 को बाहर कर देगा। अगर मुझे ** ** ** शुरू करने की आवश्यकता है। इसके बारे में कैसे जानें? –
@SaimMehmoodकोई संख्या नहीं है –
0 एक संख्या है लेकिन इसे बाहर रखा जाएगा :) करें ... जबकि चाल चलती है – Tommy
सबस्ट्रिंग और जुड़ें विधियां इस कथन के लिए उपयोग योग्य हैं।
string no = "12345";
string [] numberArray = new string[no.Length];
int counter = 0;
for (int i = 0; i < no.Length; i++)
{
numberArray[i] = no.Substring(counter, 1); // 1 is split length
counter++;
}
Console.WriteLine(string.Join(" ", numberArray)); //output >>> 0 1 2 3 4 5
.Parse (.ToString) !? समझ। यह कोई नहीं बनाता है। – dtb
@Randy, क्या आपने अपना उत्तर संशोधित किया? यह पहले सही था, अब यह गलत है। यह 'स्ट्रिंग' के 'IENumerable' को वापस कर देगा। (मैंने इसे अभी वापस बदला) –
@ डीटीबी, भ्रम क्या है? 'अंक' एक 'char' है, और' int.Parse' 'स्ट्रिंग' लेता है। इसलिए: 'digit.ToString()'। –