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"
Haim Evgi
fonte

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);
Cheng Chen
fonte
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()))
leppie
fonte
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);
Manish Nayak
fonte
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();
nawfal
fonte
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.

sushil pandey
fonte
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