Перетворити масив цілих чисел у відокремлений комами рядок


273

Це просте запитання; Я новачок в 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
Попередньо .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!
кденні

1
щойно зрозумів, що я не можу використовувати.
Луїс Теллез

Я використовую .NET 4.5. Я спробував стиснути числа, розділені комами, рядком. У мене з’явилася помилка, сказавши «не можна перетворити рядок [] в char». Тож попередня версія працювала бездоганно.
Прасант 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.


Хоча він працює погано через конкатенацію рядків
Саймон Белангер

та він буде виконувати погано , але перед .net 4.0 string.join тільки приймати масив рядків як parameter.Thus в цьому випадку також необхідно перетворити в рядок .Ми може використовувати ToString це працювати краще , але є проблема нульового виключення
Sushil Пандей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.