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.