如果我有一个字符串列表,例如 {"A", "B", "C", "D"},那么将它们动态连接成一个短语的最干净的代码是什么,在最后一个字符串之前没有逗号,并且带有 and或者最后一个字符串之前的 or ?
例如: 如果我有{“A”},它应该输出“A” 如果我有{“A”,“B”},它应该输出“A或B” 如果我有{“A”,“B”,“C”},它应该输出“A,B或C”
这就是我在 C# 中的做法,我不确定它是最干净的,但经过测试可以适用于上述每个场景:
var listOfStrings = new List<string>() { "A", "B", "C", "D" };
// replace with "and" if needed
var concatenatorPhrase = "or";
var fullPhrase = new StringBuilder();
var firstString = listOfStrings.First();
listOfStrings.Remove(firstString);
fullPhrase.Append(firstString);
if (listOfStrings.Count > 0)
{
var lastString = listOfStrings.Last();
listOfStrings.Remove(lastString);
if (listOfStrings.Count > 0)
{
fullPhrase.Append(",");
foreach (var str in listOfStrings)
{
fullPhrase.Append(str).Append(",");
}
}
fullPhrase.Append($" {concatenatorPhrase} ").Append(lastString);
}
fullPhrase.ToString()