converter matriz de string em string

155

Gostaria de converter uma matriz de string em uma única string.

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

Eu gostaria de ter algo como "Olá, mundo!"

John Saunders
fonte

Respostas:

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

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

string.Join("", test);
Dave Ward
fonte
3
+1 - Tirei o espaço no Registra-se para fazer esta correta, como fora apontado por @davidg
jmort253
Obrigado. Eu não percebi o espaço à direita, mesmo que eu o copiei colei direto na minha resposta.
Dave Ward
2
Eu também precisava colocar um separador entre as minhas cordas (coma e espaço), então eu usei: var separator = ", "; string.Join(separator , test);
drpawelo
5
Ótima resposta. Porém, eu sugeriria usar string.Join(string.Empty, test)ao invés de usar um empty-paranthesis.
agora aquele que não deve ser nomeado.
37

Uma opção um pouco mais rápida do que usar o uso já mencionado do Join()método é o método Concat () . Ele não requer um parâmetro delimitador vazio, como Join()faz. Exemplo:

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

string result = String.Concat(test);

portanto, é provavelmente mais rápido.

Catalisador de qualidade
fonte
1
Concaté melhor, no código interno de Join, anexará o separador após cada item. Mas, Concatnão tendo esses códigos, é mais simples e mais direto que Join. Esta é a resposta perfeita.
Squirrel.Downy
22

Experimentar:

String.Join("", test);

que deve retornar uma string que une os dois elementos. ""indica que você deseja que as cadeias sejam unidas sem separadores.

davidg
fonte
Isso não faria "HelloWorld!" sem um espaço entre as palavras?
precisa saber é o seguinte
1
@ jmort253 - A string original "Hello "na pergunta já tinha um espaço à direita. Se o espaço ainda não estivesse lá, você estaria correto, e usar " "como separador faria mais sentido.
Davidg
19

Uma string.Concat () simples é o que você precisa.

string[] test = new string[2];

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

string result = string.Concat(test);

Se você também precisar adicionar um separador (espaço, vírgula etc.), use string.Join ().

string[] test = new string[2];

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

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

Se você precisar fazer isso em uma matriz de strings com centenas de elementos do que string.Join () é melhor pelo ponto de vista da performance. Apenas dê um argumento "" (em branco) como separador. O StringBuilder também pode ser usado para garantir o desempenho, mas tornará o código um pouco mais longo.

ePandit
fonte
Concate Joinsão mais rápidos que o StringBuilderse você tiver 4 ou menos seqüências de caracteres para concatenar.
Quality Catalyst
3

Aggregate também pode ser usado para o mesmo.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
vivek nuna
fonte
1
Este é um método extremamente inútil de implementar String.Joindevido a várias seqüências extras construídas. Leia stackoverflow.com/questions/217805/… para obter a variante adequada de Aggregate.
Alexei Levenkov
1
    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();
    }
programador
fonte
3
Isso é implementado apenas manualmente string.Join(" ", array)(exceto o seu adiciona um espaço à direita). Por que não usar apenas o da biblioteca?
Davidg
1
@davidg - Ashwini é provavelmente novo. Aprender a usar as ferramentas existentes e superar a mentalidade "eu mesmo devo fazer" da faculdade leva algum tempo para se acostumar. Isso fez por mim. Eventualmente, as pessoas se perguntam por que seus colegas são capazes de codificar círculos ao seu redor e então veem o valor nas bibliotecas de códigos e reutilizam.
precisa saber é o seguinte
tudo o que me lembrei, tentei ajudar, só isso ... se alguém tem uma solução melhor, você está sempre livre para publicá-la .. @jmort: faz 4 anos desde que estou trabalhando ... não tenho a mentalidade de que você está falando abt ... alguém não é perfeito ... ao longo dos anos de experiência que você aprende .. espero que você não negue esse fato ..
programador
@ Ashwini - Não estava tentando te ofender. Respondendo à pergunta de @ davidg com base na minha experiência de trabalho com diferentes engenheiros.
precisa saber é o seguinte
2
Além disso, a sequência concatenada terá um espaço extra pregado no final dela. Portanto, isso não atende totalmente à questão.
precisa saber é o seguinte
0

Usei dessa maneira para tornar meu projeto mais rápido:

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

return text;

RichTextBox.Text converterá automaticamente sua matriz em uma seqüência de linhas múltiplas!

Bamdad
fonte
-1

Na resposta aceita, String.Join não é uma prática recomendada por seu uso. String.Concat deveria ser usado, pois o OP incluía um espaço à direita no primeiro item: "Hello" (em vez de usar um delimitador nulo).

No entanto, como o OP solicitou o resultado "Hello World!", String.Join ainda é o método apropriado, mas o espaço em branco à direita deve ser movido para o delimitador.

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

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

string[] test = { "Hello", "World" }; // Alternative array creation syntax 
string result = String.Join(" ", test);
Sir Charles Facehuggersworth
fonte
-4

Como isso:

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

Você também pode usar um loop:

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