在 C# 中创建逗号分隔列表
本教程将演示如何使用 string.Join()
、LINQ Aggregate,
或 StringBuilder
从诸如 IList<string
或 IEnumerable<string>
之类的容器创建逗号分隔的列表。
使用 String.Join()
方法在 C#
中创建逗号分隔列表
连接容器值的最简单方法是 string.Join()
。string.Join()
函数获取集合中的所有值,并将它们与任何定义的分隔符连接起来。使用此方法,你不仅可以制作用逗号分隔的列表,还可以制作任何其他分隔符。
string joined_str = string.Join(separator, source);
分隔符参数必须是字符串,而源可以是任何数据类型的集合。
例子:
using System;
using System.Collections.Generic;
namespace StringJoin_Example {
class Program {
static void Main(string[] args) {
// Initialize the IList
IList<Int32> list_strings = new List<Int32> { 1, 2, 3 };
// Join the IList with a comma
string joined_list = string.Join(", ", list_strings);
// Print the results
Console.WriteLine("From List: " + joined_list);
// Initialize the IEnumerable
IEnumerable<string> enum_strings =
new List<string>() { "Enum Sample 1", "Enum Sample 2", "Enum Sample 3" };
// Join the IEnumerable with a semi colon
string joined_enum = string.Join("; ", enum_strings);
// Print the results
Console.WriteLine("From Enumerable: " + joined_enum);
Console.ReadLine();
}
}
}
在上面的示例中,我们创建了两个不同的源:整数列表和可枚举的字符串列表。然后我们使用相同的 string.Join()
方法和两个不同的分隔符将它们连接起来,然后将生成的字符串打印到控制台。
输出:
From List: 1, 2, 3
From Enumerable: Enum Sample 1; Enum Sample 2; Enum Sample 3
使用 LINQ 聚合方法在 C#
中创建逗号分隔列表
加入集合值的另一个选项是使用 LINQ Aggregate
方法。虽然编码方便,但这被认为是低效的,尤其是输入越大。如果输入计数小于 1,此方法也会抛出错误,因此可能需要更多的错误处理以确保每次都能顺利运行。
string joined_str = input.Aggregate((x, y) => x + ", " + y);
与第一种方法一样,你可以使用任何字符串输入作为分隔符,但此方法将期望结果值与其输入相同。例如,如果输入集合是整数列表,则此函数将不起作用。
例子:
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqAggregate_Example {
class Program {
static void Main(string[] args) {
// Initialize the IList
IList<string> list_strings =
new List<string> { "List Sample 1", "List Sample 2", "List Sample 3" };
// Join the IList with a comma using LINQ Aggregate
string joined_list = list_strings.Aggregate((x, y) => x + ", " + y);
// Print the results
Console.WriteLine("From List: " + joined_list);
// Initialize the IEnumerable
IEnumerable<string> enum_strings =
new List<string>() { "Enum Sample 1", "Enum Sample 2", "Enum Sample 3" };
// Join the IEnumerable with a semi colon using LINQ Aggregate
string joined_enum = enum_strings.Aggregate((x, y) => x + "; " + y);
// Print the results
Console.WriteLine("From Enumerable: " + joined_enum);
Console.ReadLine();
}
}
}
在上面的示例中,我们使用 LINQ Aggregate
方法连接了两个集合。变量 x
和 y
可以更改为你喜欢的任何变量名称。此方法背后的想法是,如果仍有要连接的值,它将前一个字符串连接到下一个字符串。
输出:
From List: List Sample 1, List Sample 2, List Sample 3
From Enumerable: Enum Sample 1; Enum Sample 2; Enum Sample 3
在 C#
中使用 StringBuilder 方法创建逗号分隔列表
我们将讨论的最后一个选项是 StringBuilder
方法。与其他两种方法相比,这种方法需要编写更多代码,但允许进行更多自定义。在函数中,你可以添加更多步骤来修改你喜欢的值。例如,如果你传递日期时间列表,则可以在使用指定的 DateTime 格式时组合这些值。
例子:
using System;
using System.Collections.Generic;
using System.Text;
namespace StringBuilder_Example {
class Program {
static void Main(string[] args) {
// Initialize the IList
IList<string> list_strings =
new List<string> { "List Sample 1", "List Sample 2", "List Sample 3" };
// Join the IList with a comma using the StringBuilder method
string joined_list = join_collection(", ", list_strings);
// Print the results
Console.WriteLine("From List: " + joined_list);
// Initialize the IEnumerable
IEnumerable<string> enum_strings =
new List<string>() { "Enum Sample 1", "Enum Sample 2", "Enum Sample 3" };
// Join the IEnumerable with a semi colon using the StringBuilder method
string joined_enum = join_collection("; ", enum_strings);
// Print the results
Console.WriteLine("From Enumerable: " + joined_enum);
Console.ReadLine();
}
static string join_collection<T>(string separator, IEnumerable<T> values) {
// Initialize StringBuilder
StringBuilder sb = new StringBuilder();
// Intialize the item counter
int ctr = 0;
foreach (T item in values) {
string sep = "";
if (ctr > 0) {
// If the first item from the value collection has already been added, use the specified
// separator This is to avoid printing the separator as the first value of the string
sep = separator;
}
// Append the separator and the value as a string
sb.Append(sep);
sb.Append(item.ToString());
ctr++;
}
// Return the built string
return sb.ToString();
}
}
}
在上面的示例中,我们使用自定义函数 join_collection
加入集合,该函数接受字符串分隔符和可枚举集合。然后使用 StringBuilder
将这些值连接在一起,并附加分隔符和集合值。
输出:
From List: List Sample 1, List Sample 2, List Sample 3
From Enumerable: Enum Sample 1; Enum Sample 2; Enum Sample 3
相关文章
在 C# 中按值对字典排序
发布时间:2024/01/19 浏览次数:153 分类:编程语言
-
有两种主要方法可用于按 C# 中的值对字典进行排序:list 方法和 Linq 方法。使用 C# 中的 List 方法按值对字典进行排序。C# 字典数据结构以 key:value 对的形式存储数据。
在 C# 中更新字典值
发布时间:2024/01/19 浏览次数:72 分类:编程语言
-
本教程演示如何使用键作为索引来更新 C# 字典中的值。dictionary 是一种集合类型,与只能通过索引或值本身访问值的数组或列表不同,字典使用键和值对来存储其数据。
在 C# 中检查字典键是否存在
发布时间:2024/01/19 浏览次数:142 分类:编程语言
-
本文教我们如何检查或检测 C# 中是否存在字典键。Dictionary 倾向于映射键和值。它包含特定值映射到的特定键。不允许有重复的键,这是字典的全部目标。
C# 中的字典与哈希表
发布时间:2024/01/19 浏览次数:166 分类:编程语言
-
本指南将讨论 C# 中 Dictionary 和 Hashtable 之间的区别。你应该更喜欢哪一个?本指南将讨论 C# 中 Dictionary 和 Hashtable 之间的区别。
将 JSON 字符串转换为 C# 对象
发布时间:2024/01/19 浏览次数:73 分类:编程语言
-
本教程演示如何使用 Newtonsoft.Json 包或 JavaScriptSerializer 提供的 DeserializeObject 函数将 JSON 字符串转换为 C#
C# 将对象转换为 JSON 字符串
发布时间:2024/01/19 浏览次数:157 分类:编程语言
-
本文介绍如何将 C# 对象转换为 C# 中的 JSON 字符串的不同方法。它介绍了 JavaScriptSerializer().Serialize(),JsonConvert.SerializeObject()和 JObject.FromObject()之类的方法。
C# 解析 JSON
发布时间:2024/01/19 浏览次数:106 分类:编程语言
-
本文介绍如何使用 C# 解析 JSON 的不同方法,比如 JsonConvert.DeserializeObject(),JObject.Parse()和 JavaScriptSerializer()之类的方法。
获取 C# 中 foreach 循环当前迭代的索引
发布时间:2024/01/19 浏览次数:88 分类:编程语言
-
本文介绍如何在 C# 中获取 foreach 循环当前迭代的索引。在 C# 中,我们主要有两个循环,for 循环和 foreach 循环。foreach 循环被认为是最好的,因为它适用于所有类型的操作。
C# 中的十进制文字
发布时间:2024/01/19 浏览次数:194 分类:编程语言
-
本教程解释了 C# 中的十进制文字以及如何使用它在 C# 中初始化变量时,你可能必须明确指定你希望它用于数值数据类型的数据类型。