Преобразовать массив целых чисел в строку через запятую


274

Это простой вопрос; Я новичок в C #, как я могу выполнить следующее

  • Я хочу преобразовать массив целых чисел в строку через запятую.

у меня есть

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

Я хочу преобразовать его в одну строку

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

Ответы:


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

Это использует следующую перегрузку string.Join:

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

Вам не нужно передавать явный универсальный аргумент в этом случае. Это будет выведено.
Леппи

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

Есть ли простой способ сделать обратное? Взять строку и поместить ее в массив?
Кори

3
@Kory: с помощью метода String.Split см. Msdn.microsoft.com/en-us/library/…
Ченг Чен

132

.NET 4

string.Join(",", arr)

.NET ранее

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

17
Спасибо за предварительную версию .NET4!
Kdenney

1
Просто понял, что не могу использовать версию .net 4, и я не понял, почему у меня возникла ошибка, пока я не увидел ваш ответ, спасибо.
Луис Теллез

Я использую .NET 4.5. Я попытался объединить числа, разделенные запятыми, строкой. Я получил сообщение об ошибке «не могу преобразовать строку [] в символ». Так что ранняя версия работала без нареканий.
Прасант G

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

Вы можете использовать Linq для этого

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

5

У вас может быть пара методов расширения, чтобы упростить эту задачу:

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

Так что теперь просто:

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

3

Используйте Aggregateметод LINQ для преобразования массива целых чисел в строку через запятую

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

выход будет

1,2,3,4

Это одно из решений, которое вы можете использовать, если у вас не установлен .net 4.


Он работает плохо из-за конкатенации строк
Simon Belanger

да, он будет работать плохо, но до .net 4.0 String.join принимает только строковый массив в качестве параметра. Таким образом, в этом случае нам также необходимо преобразовать в строку. Мы можем использовать ToString, чтобы он
работал
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.