Converter matriz de números inteiros em sequência separada por vírgula


273

É uma pergunta simples; Sou iniciante em C #, como posso executar o seguinte

  • Eu quero converter uma matriz de números inteiros em uma seqüência de caracteres separada por vírgula.

eu tenho

int[] arr = new int[5] {1,2,3,4,5};

Eu quero convertê-lo em uma string

string => "1,2,3,4,5"

Respostas:


539
var result = string.Join(",", arr);

Isso usa a seguinte sobrecarga de string.Join:

public static string Join<T>(string separator, IEnumerable<T> values);

Você não precisa passar o argumento genérico explícito neste caso. Será inferido.
Leppie

6
Antes do .NET 4 string.Join (",", Array.ConvertAll (arr, i => i.ToString ())))
TPAKTOPA

Existe uma maneira simples de fazer o inverso disso? Pegue a corda e coloque-a em uma matriz?
Kory

3
@Kory: Usando o método String.Split
Cheng Chen

132

.NET 4

string.Join(",", arr)

.NET anterior

string.Join(",", Array.ConvertAll(arr, x => x.ToString()))

17
Obrigado pela versão pré-.NET4!
kdenney

1
acabei de perceber que não podia usar a versão .net 4 e não entendi por que estava tendo um erro até ver sua resposta, obrigado.
Luis Tellez

Estou usando o .NET 4.5. Tentei concatenar os números separados por vírgula com uma string. Eu recebi um erro dizendo "não é possível converter a string [] em char". Portanto, a versão anterior funcionou perfeitamente.
Prasanth G

10
int[] arr = new int[5] {1,2,3,4,5};

Você pode usar o Linq para isso

String arrTostr = arr.Select(a => a.ToString()).Aggregate((i, j) => i + "," + j);

5

Você pode ter um par de métodos de extensão para facilitar esta tarefa:

public static string ToDelimitedString<T>(this IEnumerable<T> lst, string separator = ", ")
{
    return lst.ToDelimitedString(p => p, separator);
}

public static string ToDelimitedString<S, T>(this IEnumerable<S> lst, Func<S, T> selector, 
                                             string separator = ", ")
{
    return string.Join(separator, lst.Select(selector));
}

Então agora apenas:

new int[] { 1, 2, 3, 4, 5 }.ToDelimitedString();

3

Use o Aggregatemétodo LINQ para converter uma matriz de números inteiros em uma sequência separada por vírgula

var intArray = new []{1,2,3,4};
string concatedString = intArray.Aggregate((a, b) =>Convert.ToString(a) + "," +Convert.ToString( b));
Response.Write(concatedString);

saída será

1,2,3,4

Essa é uma das soluções que você pode usar se não tiver o .net 4 instalado.


Ele executa mal devido à concatenação, embora
Simon Belanger

sim vai executar mal mas antes de .NET 4.0 String.Join só levar matriz de cadeia como parameter.Thus, nesse caso, também precisa converter em cadeia de .que pode usar ToString lo um melhor desempenho, mas não há problema de exceção nula
sushil Pandey
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.