2009-03-09 2 views
3

В Java класс java.util.Arrays имеет несколько статических методов toString(...), которые принимают массив и возвращают его строковое представление (т. Е. Строковое представление содержимого массива, разделенного запятыми, и всего представления, заключенного в квадратные скобки - например, «[1, 2, 3]»)..NET-эквивалент методов java.util.Arrays.toString (...) в Java

Есть ли эквивалентный метод/функциональность в .NET?

Я ищу метод, который делает это, не прибегая к ручному построению цикла/метода для итерации по массиву.

ответ

3

String.Join способ.

[Вы должны добавить квадратные скобки сами]

+0

Это решение работает только тогда, когда массив уже имеет строку типа. – JaredPar

+0

Правда. Я предположил, что это то, о чем просили. –

+0

@Mitch, на основе примера [1, 2, 3], я думал, что он ищет более общее решение. Но он принял твое, поэтому я сделал это назад. – JaredPar

1

Попробуйте это. Он не будет обрабатывать значения NULL, но он будет работать против типов значений и ссылочных типов. Поскольку это метод расширения, вы можете просто вызвать .ToElementString() для любого экземпляра массива.

public static string ToElementString<T>(this T[] array) { 
    var middle = array.Select(x => x.ToString().Aggregate((l,r) => l+","+r); 
    return "[" + middle + "]"; 
} 

Вот версия, которая использует строитель и потенциально может быть немного более эффективным (только профайлер не знает наверняка). Он также будет корректно обрабатывать нулевые значения.

public static string ToElementString<T>(this T[] array) { 
    var builder = new StringBuilder(); 
    builder.Append('['); 
    for(int i =0; i < array.Length; i++) { 
    if (i > 0) { 
     builder.Append(','); 
    } 
    builder.Append(array[i]); 
    } 
    builder.Append(']'); 
    return builder.ToString(); 
} 
Смежные вопросы