Konwertuj tablicę liczb całkowitych na ciąg rozdzielany przecinkami


273

To proste pytanie; Jestem nowicjuszem w C #, jak mogę wykonać następujące czynności

  • Chcę przekonwertować tablicę liczb całkowitych na ciąg rozdzielany przecinkami.

mam

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

Chcę przekonwertować go na jeden ciąg

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

Odpowiedzi:


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

Wykorzystuje to następujące przeciążenie string.Join:

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

W tym przypadku nie trzeba przekazywać jawnego ogólnego argumentu. Zostanie to wywnioskowane.
leppie

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

Czy istnieje prosty sposób na odwrócenie tego? Weź ciąg i umieść go w tablicy?
Kory

3
@Kory: Używając metody String.Split, zobacz msdn.microsoft.com/en-us/library/…
Cheng Chen

132

.NET 4

string.Join(",", arr)

.NET wcześniej

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

17
Dzięki za wersję wcześniejszą .NET4!
kdenney

1
właśnie zdałem sobie sprawę, że nie mogę użyć wersji .net 4 i nie zrozumiałem, dlaczego wystąpił błąd, dopóki nie zobaczyłem twojej odpowiedzi, dzięki.
Luis Tellez

Korzystam z .NET 4.5. Próbowałem połączyć liczby oddzielone przecinkami za pomocą łańcucha. Wystąpił błąd: „Nie można przekonwertować ciągu [] na znak char”. Wcześniejsza wersja działała bezbłędnie.
Prasanth G

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

Możesz do tego użyć Linq

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

5

Możesz mieć parę metod rozszerzenia, aby ułatwić to zadanie:

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

Więc teraz:

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

3

Użyj Aggregatemetody LINQ , aby przekonwertować tablicę liczb całkowitych na ciąg rozdzielany przecinkami

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

wyjście będzie

1,2,3,4

Jest to jedno z rozwiązań, którego możesz użyć, jeśli nie masz zainstalowanego .net 4.


Działa jednak słabo ze względu na konkatenację strun
Simon Belanger

tak, będzie działał słabo, ale przed .net 4.0 String.join jako parametr przyjmuje tylko tablicę ciągów. W takim przypadku musimy również przekonwertować ciąg. możemy użyć ToString, aby działał lepiej, ale występuje problem wyjątku zerowego
Sushil pandey
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.