2011-01-21 2 views
177

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

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

У меня есть

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

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

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

ответ

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

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

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

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

+0

@leppie: Я просто найду это. –

+5

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

99

.NET 4

string.Join(",", arr) 

.NET ранее

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

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

+0

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

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(); 
4

Используйте 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.

+0

Он плохо работает из-за конкатенации строк, хотя –

+0

да он будет работать плохо, но до .net 4.0 String.join принимает только строковый массив как параметр. Так что в этом случае нам также нужно преобразовать строку. Мы можем использовать ToString, который он выполняет лучше, но есть проблема нулевого исключения –

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

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

String arrTostr = arr.Select(a => a.ToString()).Aggregate((i, j) => i + "," + j); 
Смежные вопросы