स्प्लिट स्ट्रिंग, एक लाइन में ToList <int> () कन्वर्ट करें


191

मेरे पास एक स्ट्रिंग है जिसमें संख्याएं हैं

string sNumbers = "1,2,3,4,5";

मैं इसे विभाजित कर सकता हूं फिर इसे रूपांतरित कर सकता हूं List<int>

sNumbers.Split( new[] { ',' } ).ToList<int>();

मैं स्ट्रिंग सरणी को पूर्णांक सूची में कैसे बदल सकता हूं? ताकि मैं परिवर्तित string[]कर सकूंIEnumerable


हम आज बिल्कुल एक ही प्रश्न था: मुझे क्लिक करें
दारियो

3
"एक पंक्ति में" सी एक बहुत मजबूत एक बहुत सख्त आवश्यकता है! </ perl>
dfa

2
यह प्रश्न विशेष रूप से संख्याओं की एक स्ट्रिंग को विभाजित करने के लिए कहता है, जो उत्तर को सरल रखता है। सामान्य तार के लिए ट्रायपार्स के मुद्दों पर डारियो ने हैंडल (बोग्स डाउन इन?) का उल्लेख किया।
गोदेय

जवाबों:



31

आप इसे इस तरह से बिना Linq की आवश्यकता के भी कर सकते हैं:

List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );

// Uses Linq
var numbers = Array.ConvertAll(sNumbers.Split(','), int.Parse).ToList();

18

जोज़ के रास्ते को भी LINQ की जरूरत ToList()है, System.Linqनाम स्थान में है।

आप सरणी को सूची निर्माता को पास करके लाइन के बिना एरे को सूची में बदल सकते हैं:

List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );

17

int.TryParseअपवादों से बचने के लिए बेहतर उपयोग ;

var numbers = sNumbers
            .Split(',')
            .Where(x => int.TryParse(x, out _))
            .Select(int.Parse)
            .ToList();

10

असाइन किए गए मान को निर्देशित करने के लिए सरणी को अंतर करना भी संभव है।

इस तरह

int[] numbers = sNumbers.Split(',').Select(Int32.Parse).ToArray();

4

भी आप इस एक्सटेंशन विधि का उपयोग कर सकते हैं

public static List<int> SplitToIntList(this string list, char separator = ',')
{
    return list.Split(separator).Select(Int32.Parse).ToList();
}

उपयोग:

var numberListString = "1, 2, 3, 4";
List<int> numberList = numberListString.SplitToIntList(',');

3

यूनिटी 3 डी पर, int.Parseअच्छी तरह से काम नहीं करता है। इसलिए मैं बलो की तरह इस्तेमाल करता हूं।

List<int> intList = new List<int>( Array.ConvertAll(sNumbers.Split(','),
 new Converter<string, int>((s)=>{return Convert.ToInt32(s);}) ) );

आशा है कि यह मदद यूनिटी 3 डी उपयोगकर्ताओं के लिए है।


3

आप नई C # 6.0 भाषा सुविधाओं का उपयोग कर सकते हैं:

  • प्रतिनिधि (s) => { return Convert.ToInt32(s); }को संबंधित विधि समूह से बदलेंConvert.ToInt32
  • निरर्थक निर्माण कॉल को बदलें new Converter<string, int>(Convert.ToInt32):Convert.ToInt32

परिणाम होगा:

var intList = new List<int>(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32));

2

मेरी समस्या समान थी लेकिन इस असुविधा के साथ कि कभी-कभी स्ट्रिंग में अक्षर होते हैं (कभी-कभी खाली होते हैं)।

string sNumbers = "1,2,hh,3,4,x,5";

Pcode Xonos एक्सटेंशन विधि का पालन करने की कोशिश कर रहा है:

public static List<int> SplitToIntList(this string list, char separator = ',')
{
      int result = 0;
      return (from s in list.Split(',')
              let isint = int.TryParse(s, out result)
              let val = result
              where isint
              select val).ToList(); 
}

1
धन्यवाद, हालांकि आप एक विभाजक घोषित करते हैं और फिर आप इसका उपयोग नहीं करते हैं।
ह्यूगो डेल्सिंग

-2

आप इसका उपयोग कर सकते हैं:

List<Int32> sNumberslst = sNumbers.Split(',').ConvertIntoIntList();

2
ढेर अतिप्रवाह में आपका स्वागत है! हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है। कृपया अपने कोड को व्याख्यात्मक टिप्पणियों के साथ भीड़ न दें, क्योंकि इससे कोड और स्पष्टीकरण दोनों की पठनीयता कम हो जाती है!
गुडबाय StackExchange

2
फ़ंक्शन ConvertIntoIntList से बाहर नहीं निकलता है।
फेडेरिको नवरेट

इसके अलावा, आपको निम्न वर्ग जोड़ने की आवश्यकता है: स्थिर सार्वजनिक वर्ग HelperMethods {स्थिर सार्वजनिक सूची <int> ConvertIntoIntList (यह स्ट्रिंग [] stringList) {int x = 0; var intList = stringList.Where (str => int.TryParse (str, out x))। चुनाव (str => x) .TLList (); इंटलिस्ट लौटें; }}
फेडरिको नवरेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.