convertește matricea de șiruri în șir de caractere (Programare, C#, Array-Uri, String)

user522860 a intrebat.

Aș dori să convertesc o matrice de șiruri într-un singur șir.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

Aș dori să am ceva de genul „Hello World!”

9 răspunsuri
Dave Ward
string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string.Join("", test);

Comentarii

  • +1 – Am eliminat spațiul din Join pentru a face acest lucru corect, așa cum a subliniat @davidg -.  > Por jmort253.
  • Mulțumesc. Nu am observat spațiul din urmă, chiar dacă l-am copiat și lipit direct în răspunsul meu. –  > Por Dave Ward.
  • De asemenea, aveam nevoie să pun un separator între șirurile mele (comă și spațiu), așa că am folosit: var separator = ", "; string.Join(separator , test); –  > Por drpawelo.
  • Un răspuns excelent. Totuși, v-aș sugera să folosiți string.Join(string.Empty, test) mai degrabă decât să folosiți un empty-paranthesis. –  > Por acum cel care nu trebuie să fie numit..
Catalizator de calitate

Un pic mai rapidă opțiune decât utilizarea deja menționată a utilizării Join() este metoda Concat() . Aceasta nu necesită un parametru delimitator gol ca Join() o face. Exemplu:

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

string result = String.Concat(test);

prin urmare, este probabil mai rapidă.

Comentarii

  • Concat este mai bună, în codul intern al Join, se va adăuga separatorul după fiecare element. Dar Concat nu are astfel de coduri, este mai simplu și mai direct decât Join. Acesta este răspunsul cel mai potrivit. –  > Por Veverița.Downy.
davidg

Încearcă:

String.Join("", test);

care ar trebui să returneze un șir de caractere care unește cele două elemente. "" indică faptul că doriți ca șirurile să fie unite fără separatori.

Comentarii

  • Asta nu ar însemna „HelloWorld!” fără spațiu între cuvinte? –  > Por jmort253.
  • @jmort253 – Șirul original "Hello " din întrebare avea deja un spațiu la sfârșit. Dacă spațiul nu era deja acolo, atunci ați avea dreptate, iar folosirea lui " " ca separator ar avea mai mult sens. –  > Por davidg.
ePandit

Un simplu string.Concat() este ceea ce ai nevoie.

string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string result = string.Concat(test);

Dacă aveți nevoie să adăugați și un separator (spațiu, virgulă etc.), atunci ar trebui să folosiți string.Join().

string[] test = new string[2];

test[0] = "Red";
test[1] = "Blue";

string result = string.Join(",", test);

Dacă trebuie să efectuați acest lucru pe o matrice de șiruri de caractere cu sute de elemente, atunci string.Join() este mai bun din punct de vedere al performanței. Dați doar un argument „” (spațiu) ca separator. StringBuilder poate fi, de asemenea, utilizat din motive de performanță, dar va prelungi puțin codul.

Comentarii

  • Concat și Join sunt mai rapide decât StringBuilder dacă aveți 4 sau mai puține șiruri de concatenat. –  > Por Catalizator de calitate.
  • acesta este cel mai bun răspuns! –  > Por Humberto Pereira.
vivek nuna

Aggregate poate fi, de asemenea, utilizat pentru același lucru.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);

Comentarii

  • Aceasta este o metodă extrem de risipitoare pentru a pune în aplicare String.Join din cauza mai multor șiruri suplimentare construite. Vă rugăm să citiți stackoverflow.com/questions/217805/… pentru varianta corectă de Aggregate. –  > Por Alexei Levenkov.
programator
    string ConvertStringArrayToString(string[] array)
    {
        //
        // Concatenate all the elements into a StringBuilder.
        //
        StringBuilder strinbuilder = new StringBuilder();
        foreach (string value in array)
        {
            strinbuilder.Append(value);
            strinbuilder.Append(' ');
        }
        return strinbuilder.ToString();
    }

Comentarii

  • Aceasta este doar o implementare manuală string.Join(" ", array) (cu excepția faptului că al tău adaugă un spațiu la sfârșit). De ce să nu-l folosiți pe cel din bibliotecă? –  > Por davidg.
  • @davidg – Ashwini este probabil nou. Învățarea utilizării instrumentelor existente și depășirea mentalității „trebuie să o fac eu însumi” din facultate necesită ceva timp pentru a se obișnui. Așa a fost pentru mine. În cele din urmă, oamenii se întreabă de ce colegii lor reușesc să codifice în cercuri în jurul lor, iar apoi văd valoarea bibliotecilor de cod și a reutilizării. –  > Por jmort253.
  • orice mi-am amintit am încercat să ajut, asta e tot..dacă cineva are o soluție mai bună este oricând liber să o posteze… @jmort:au trecut 4 ani de când lucrez…nu am mentalitatea despre care vorbești…nimeni nu este perfect…de-a lungul anilor de experiență înveți…sper că nu negi acest fapt… – –  > Por programator.
  • @Ashwini – Nu am vrut să te jignesc. Răspundeam doar la întrebarea lui @davidg pe baza experienței mele de lucru cu diferiți ingineri. –  > Por jmort253.
  • De asemenea, șirul concatenat va avea un spațiu suplimentar lipit la sfârșitul lui. Deci, acest lucru nu răspunde pe deplin la întrebare. –  > Por jmort253.
Bamdad

Am folosit acest mod de a face proiectul meu mai rapid:

RichTextBox rcbCatalyst = new RichTextBox()
{
    Lines = arrayString
};
string text = rcbCatalyst.Text;
rcbCatalyst.Dispose();

return text;

RichTextBox.Text va converti automat matricea dvs. într-un șir de caractere cu mai multe linii!

Sir Charles Facehuggersworth

În răspunsul acceptat, String.Join nu este cea mai bună practică în funcție de utilizarea sa. String.Concat ar fi trebuit să fie folosit deoarece OP a inclus un spațiu de urmărire în primul element: „Hello ” (în loc să folosească un delimitator nul).

Cu toate acestea, din moment ce OP a cerut rezultatul „Hello World!”, String.Join este în continuare metoda adecvată, dar spațiul de final ar trebui mutat în locul delimitatorului.

// string[] test = new string[2];

// test[0] = "Hello ";
// test[1] = "World!";

string[] test = { "Hello", "World" }; // Alternative array creation syntax 
string result = String.Join(" ", test);

Canaan

În felul următor:

string str= test[0]+test[1];

De asemenea, puteți utiliza o buclă:

for(int i=0; i<2; i++)
    str += test[i];