একটি স্ট্রিং [] অ্যারেতে স্ট্রিং কীভাবে যুক্ত করবেন? নেই। ফাংশন যোগ করুন


221
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স্ট্রিংয়ে রূপান্তর করতে চাই এবং তারপরে এটি আমার অ্যারেতে যুক্ত করব like কিভাবে আমি এটি করতে পারব?

উত্তর:


393

আপনি কোনও অ্যারেতে আইটেমগুলি যুক্ত করতে পারবেন না কারণ এটির দৈর্ঘ্য নির্ধারিত। কি আপনি যা খুঁজছেন একটি হল List<string>যা পরে ব্যবহার করে একটি অ্যারে দিকে ফিরে যাবে না, list.ToArray()যেমন

List<string> list = new List<string>();
list.Add("Hi");
String[] str = list.ToArray();

3
+1 আমি এগিয়ে যাব এবং এই বিষয়ে আমার উত্তরটির একটি লিঙ্ক অফার করব। stackoverflow.com/questions/1168915/…
স্যাম হারওয়েল

2
"আপনি কোনও অ্যারেতে আইটেম যুক্ত করতে পারবেন না" - আসলে আপনি নীচে দেখুন can
অ্যালেক্স স্ট্রিকল্যান্ড

112

বিকল্পভাবে, আপনি অ্যারের আকার পরিবর্তন করতে পারেন।

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

6
Array.Resize হয় একটি অ্যারের আকার পরিবর্তন করতে সঠিক উপায়। কোড স্নিপেটের আগে আপনি যদি কোনও মন্তব্য যোগ করেন তবে এটির পরিস্থিতি পরিচালনা করার জন্য বিরলতম উপায় হ'ল অ্যারে আপনাকে একটি পুনরায় আকার পরিবর্তনযোগ্য সংগ্রহের প্রতিনিধিত্ব করে যেখানে আপনি +1 পেয়েছেন। :)
স্যাম হারওয়েল

12
প্রকৃতপক্ষে, এটিই (কেবলমাত্র) উত্তর যা ওপি প্রশ্নের ঠিক সমাধান করে।
ডায়ালাক্স

66

সিস্টেমটি সংগ্রহ থেকে তালিকাটি <টি> ব্যবহার করুন T জেনেরিক

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



myCollection.Add(aString);

বা, শর্টহ্যান্ড (সংগ্রহ সূচনা ব্যবহারকারী):

List<string> myCollection = new List<string> {aString, bString}

আপনি যদি শেষে একটি অ্যারে চান, ব্যবহার করুন

myCollection.ToArray();

আপনি কোনও ইন্টারফেসে যেমন বিস্মরণযোগ্য, তারপরে কেবল সংগ্রহটি ফিরিয়ে দেওয়া ভাল।

সম্পাদনা করুন: আপনার যদি অবশ্যই একটি অ্যারে ব্যবহার করা থাকে তবে আপনি এটি সঠিক আকারে (যেমন আপনার ফাইল ফাইলের সংখ্যা) প্রিলোকলেট করতে পারেন। তারপরে, ফোরচ লুপে, আপনাকে পরবর্তী আপডেট করতে হবে সেই অ্যারে সূচকটির জন্য একটি কাউন্টার বজায় রাখুন।

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;
}

যোগদানের জন্য আমার পদ্ধতিটি কেবল একটি স্ট্রিং [] অ্যারে গ্রহণ করে, আমি একটি তালিকা <> ব্যবহার করতে পারি না। অ্যারে ব্যবহার করে এটি সমাধান করার কোনও উপায় আছে কি?
সেরজিও তাপিয়া

1
একটি তালিকা ব্যবহার করুন <স্ট্রিং> এবং তারপরে আপনার অ্যারের দরকার পরে টুআরে পদ্ধতিতে কল করুন
ক্রিস ডুনাওয়ে

30

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
* Add, না add
bigp


6

এইভাবে যখন প্রয়োজন হয় তখন আমি একটি স্ট্রিংয়ে যুক্ত করি:

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

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

3

আপনি ফোরচ ব্যবহার না করে লুপের জন্য কেন ব্যবহার করবেন না। এই দৃশ্যে, আপনি পূর্বাঞ্চ লুপের বর্তমান পুনরাবৃত্তির সূচকটি পাওয়ার কোনও উপায় নেই।

ফাইলটির নাম এইভাবে স্ট্রিং [] এ যুক্ত করা যেতে পারে,

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;
}

কেবলমাত্র ইস্যু: আপনার দৈর্ঘ্য কত তা অবশ্যই আপনার জানা উচিত listaDeArchivos। যদি আপনি না করেন (উদাহরণস্বরূপ যদি এটি কখনও পরিবর্তিত হতে পারে এবং সময়ের আগে গণনা করা জটিল হবে কারণ আপনার অবজেক্টগুলি নেস্টেড মডেল বা মডেল ক্ষেত্র যা পূরণ করা যায় না / যেমন পূরণ করা যায় না) এবং আপনি কেবল এটি করতে চান string[] Coleccion;তারপরে এটি নির্ধারণ করুন int idx = 0; Coleccion[idx] = fileName; idx++;, এটি আপনাকে বলবে Use of unassigned local variable 'Coleccion'। এটিকে আরও গতিশীল হওয়ার জন্য যে কেউ অভিযোজন করতে চায় তার জন্য কেবল এফওয়াইআই, এটি একটি সমস্যা রয়েছে।
vapcguy

1

এই কোডটি অ্যান্ড্রয়েডে স্পিনারের জন্য গতিশীল মানগুলি প্রস্তুত করার জন্য দুর্দান্ত কাজ করে:

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


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

1

অ্যারে সাফ করার জন্য এবং একই সাথে এর উপাদানগুলির সংখ্যা = 0 তৈরি করতে, এটি ব্যবহার করুন ..

System.Array.Resize(ref arrayName, 0);

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;
}

0
string[] MyArray = new string[] { "A", "B" };
MyArray = new List<string>(MyArray) { "C" }.ToArray();
//MyArray = ["A", "B", "C"]

এখানে অ্যারে কেন খারাপ পছন্দ তা ব্যাখ্যা করা ভাল ধারণা হতে পারে এবং ওপির তালিকা <> ব্যবহার শুরু করা উচিত।
LueTm

0

লিনকের সাথে একটি রেফারেন্স যুক্ত করা using System.Linq;এবং সরবরাহিত এক্সটেনশন পদ্ধতিটি ব্যবহার করুন Append: public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element) তারপরে আপনাকে এটিকে আবার পদ্ধতিটি string[]ব্যবহার করে রূপান্তর করতে হবে .ToArray()

কারণ টাইপ সম্ভব, string[]কার্যকরী IEnumerable, এটি নিম্নলিখিত ইন্টারফেসগুলি প্রয়োগ: IEnumerable<char>, IEnumerable, IComparable, IComparable<String>, IConvertible, IEquatable<String>,ICloneable

using System.Linq;
public string[] descriptionSet new string[] {"yay"};
descriptionSet = descriptionSet.Append("hooray!").ToArray();  
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.