2009-09-17 23 views
165
private string[] ColeccionDeCortes(string Path) 
{ 
    DirectoryInfo X = new DirectoryInfo(Path); 
    FileInfo[] listaDeArchivos = X.GetFiles(); 
    string[] Coleccion; 

    foreach (FileInfo FI in listaDeArchivos) 
    { 
     //Add the FI.Name to the Coleccion[] array, 
    } 

    return Coleccion; 
} 

मैं FI.Name को स्ट्रिंग में कनवर्ट करना चाहता हूं और फिर इसे अपने सरणी में जोड़ना चाहता हूं। मैं यह कैसे कर सकता हूँ?स्ट्रिंग [] सरणी में स्ट्रिंग कैसे जोड़ें? कोई नहीं है। समारोह

उत्तर

302

आप एक सरणी के लिए आइटम नहीं जोड़ सकते, क्योंकि यह लंबाई तय किया है, क्या आप देख रहे हैं एक List<string>, जो बाद में एक सरणी list.ToArray() उपयोग करने के लिए दिया जा सकता है है।

+2

+1 पर कॉल करें, मैं आगे बढ़ जाऊंगा और इस विषय पर मेरे उत्तर का एक लिंक प्रदान करूंगा। http: // stackoverflow।कॉम/प्रश्न/1168 9 15/जो-एक-अधिक-effecient-listint-or-int/1168922 # 1168922 –

+1

"आप किसी सरणी में आइटम नहीं जोड़ सकते" - वास्तव में आप नीचे देख सकते हैं। –

47

उपयोग सूची < टी> System.Collections.Generic

List<string> myCollection = new List<string>(); 

… 

myCollection.Add(aString); 
से

तुम सच में अंत में एक सरणी चाहते हैं,

myCollection.ToArray(); 

का उपयोग आप एक इंटरफेस को सार संक्षेप से बेहतर हो सकता है, जैसे कि IENumerable, फिर संग्रह को वापस कर रहा है।

संपादित करें: यदि आप एक सरणी का उपयोग करना चाहते हैं, तो आप इसे सही आकार (यानी आपके पास FileInfo की संख्या) को पूर्वस्थापित कर सकते हैं। फिर, फ़ोरैच लूप में, सरणी इंडेक्स के लिए काउंटर बनाए रखें जिसे आपको अगली अपडेट करने की आवश्यकता है।

private string[] ColeccionDeCortes(string Path) 
    { 
     DirectoryInfo X = new DirectoryInfo(Path); 
     FileInfo[] listaDeArchivos = X.GetFiles(); 
     string[] Coleccion = new string[listaDeArchivos.Length]; 
     int i = 0; 

     foreach (FileInfo FI in listaDeArchivos) 
     { 
      Coleccion[i++] = FI.Name; 
      //Add the FI.Name to the Coleccion[] array, 
     } 

     return Coleccion; 
    } 
+0

शामिल होने के लिए मेरी विधि केवल एक स्ट्रिंग [] सरणी प्राप्त करती है, मैं सूची <> का उपयोग नहीं कर सकता। क्या ऐरे का उपयोग करके इसे हल करने का कोई तरीका है? –

+1

एक सूची का उपयोग करें और फिर जब आपको सरणी की आवश्यकता हो, तो ToArray विधि –

3
string[] coleccion = Directory.GetFiles(inputPath) 
    .Select(x => new FileInfo(x).Name) 
    .ToArray(); 
77

वैकल्पिक रूप से, आप सरणी का आकार बदल सकते हैं।

Array.Resize(ref array, array.Length + 1); 
array[array.Length - 1] = "new string"; 
+6

'Array.Resize' * एक सरणी का आकार बदलने का उचित तरीका है। यदि आप कोड स्निपेट से पहले कोई टिप्पणी जोड़ते हैं तो यह कहता है कि यह परिस्थितियों को संभालने का सबसे अच्छा तरीका है जहां सरणी एक आकार बदलने योग्य संग्रह का प्रतिनिधित्व करती है, आपको +1 मिल गया है। :) –

+8

असल में, यह (केवल) उत्तर है जो ओपी प्रश्न को हल करता है। – dialex

0

मैं इस मामले में एक सरणी का उपयोग नहीं करता। इसके बजाय मैं एक स्ट्रिंगकोलेक्शन का उपयोग करूंगा।

using System.Collections.Specialized; 

private StringCollection ColeccionDeCortes(string Path) 
{ 

    DirectoryInfo X = new DirectoryInfo(Path); 

    FileInfo[] listaDeArchivos = X.GetFiles(); 
    StringCollection Coleccion = new StringCollection(); 

    foreach (FileInfo FI in listaDeArchivos) 
    { 
     Coleccion.Add(FI.Name); 
    } 
    return Coleccion; 
} 
10

अगर मैं गलत नहीं कर रहा हूँ यह है:

MyArray.SetValue(ArrayElement, PositionInArray) 
19

Eazy

// Create list 
var myList = new List<string>(); 

// Add items to the list 
myList.Add("item1"); 
myList.Add("item2"); 

// Convert to array 
var myArray = myList.ToArray(); 
+2

* 'जोड़ें ',' जोड़ें 'नहीं। – bigp

2

क्यों आप के बजाय foreach का उपयोग करने का पाश के लिए एक का उपयोग नहीं करते। इस परिदृश्य में, फ़ोरैच लूप के वर्तमान पुनरावृत्ति की अनुक्रमणिका प्राप्त करने का कोई तरीका नहीं है।

फ़ाइल का नाम स्ट्रिंग इस तरह से [] में जोड़ा जा सकता,

private string[] ColeccionDeCortes(string Path) 
{ 
    DirectoryInfo X = new DirectoryInfo(Path); 
    FileInfo[] listaDeArchivos = X.GetFiles(); 
    string[] Coleccion=new string[listaDeArchivos.Length]; 

    for (int i = 0; i < listaDeArchivos.Length; i++) 
    { 
    Coleccion[i] = listaDeArchivos[i].Name; 
    } 

    return Coleccion; 
} 
3

यह जब जरूरत है कि कैसे मैं एक स्ट्रिंग के लिए जोड़ है:

 string[] myList; 
     myList = new string[100]; 
     for (int i = 0; i < 100; i++) 
     { 
      myList[i] = string.Format("List string : {0}", i); 
     } 
1

इस कोड काम करता है महान एंड्रॉइड में स्पिनर के लिए गतिशील मानों की तैयारी के लिए:

List<String> yearStringList = new ArrayList<>(); 
    yearStringList.add("2017"); 
    yearStringList.add("2018"); 
    yearStringList.add("2019"); 


    String[] yearStringArray = (String[]) yearStringList.toArray(new String[yearStringList.size()]); 
0

सरणी को साफ़ करने और इसके तत्वों की संख्या = 0 ए एक ही समय में, इसका उपयोग करें ..

System.Array.Resize(ref arrayName, 0); 
संबंधित मुद्दे