Печать запятой (,) после каждого элемента массива
Допустим, у меня есть массив (или список) элементов
A[] = [a,b,c,d,e]
Если я хочу распечатать их так, чтобы каждый элемент был разделен запятой (или любым другим разделителем), я обычно должен сделать это:
for(int i=0; i < A.Count; i++)
{
Console.Write(A[i]);
if (i != A.Count-1)
Console.Write(",");
}
Итак, мой вывод выглядит следующим образом:
a,b,c,d,e
Есть ли лучший или более аккуратный способ достичь этого?
Мне нравится использовать цикл foreach, но он также выводит запятую после последнего элемента, что нежелательно.
7 ответов:
Вы ищете
String.Join():var list = String.join(",", A);
String.JoinМетод(String, String[])Объединяет все элементы строкового массива, используя указанный разделитель между каждым элементом.
public static string Join( string separator, params string[] value )
Есть ли лучший или более аккуратный способ достичь этого? Мне нравится использовать цикл foreach, но он также выводит запятую после последнего элемента, что нежелательно.Как говорили другие,
Joinпоступает правильно. Но вот еще один способ подумать о проблеме, которая может помочь вам в будущем. Вместо того, чтобы думать о проблеме как , поставьте запятую после каждого элемента, кроме последнего элемента , что, как вы правильно заметили, затрудняет работу с цикл" foreach " - подумайте о задаче, как поставить запятую перед каждым элементом, кроме первого элемента. Теперь это легко сделать с петлей foreach!Еще около миллиона способов решения подобной задачи см.:
Вызов Эрика Липперта "запятая-придирка", лучший ответ?
И оригинальное сообщение в блоге:
Http://blogs.msdn.com/b/ericlippert/archive/2009/04/15/comma-quibbling.aspx
Используйте строку .Метод Join , Очень удобный.
String.Join(",", my_array)
string separator = String.Empty; for(int i=0; i < A.Length; i++) { Console.Write(seperator); Console.Write(A[i]); separator = ","; }
using System; using System.Linq; public class Program { public static void Main() { string[] values = new string[]{"banana", "papaya", "melon"}; var result = values.Aggregate((x,y) => x + ", " + y); Console.WriteLine(result); } }
Comments