将字符串列表连接成短语,最后一个字符串之前没有逗号,最后一个字符串之前有“and”/“or”

问题描述 投票:0回答:1

如果我有一个字符串列表,例如 {"A", "B", "C", "D"},那么将它们动态连接成一个短语的最干净的代码是什么,在最后一个字符串之前没有逗号,并且带有 and或者最后一个字符串之前的 or ?

例如: 如果我有{“A”},它应该输出“A” 如果我有{“A”,“B”},它应该输出“A或B” 如果我有{“A”,“B”,“C”},它应该输出“A,B或C”

c# .net
1个回答
0
投票

这就是我在 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()
© www.soinside.com 2019 - 2024. All rights reserved.