【问题标题】:How can I add a delimiter between phrases in a list with foreach loop?如何使用 foreach 循环在列表中的短语之间添加分隔符?
【发布时间】:2020-02-01 10:56:34
【问题描述】:

我有这个代码:

foreach (var node in nodes)
{
    result += node.InnerText;
}

InnerText 只是 1-2 个字符,从不包含 # 符号。节点中节点的值可以有一个或多个。

我怎样才能分隔这些,例如,如果这些是节点的值:

"ab" and "cd"  

结果将是ab#cd

我知道我可以将# 添加到值中,但是最后一个字符呢?如果我只是简单地添加了#,那么我会得到ab#cd#,这不是我想要的。

【问题讨论】:

  • 您有几个选择,1) 检查您是否在第一个项目上,如果不是,则在添加项目之前添加分隔符 ,或者 2) 使用string.Join("#", collection) 但是你需要准备一个单独元素的集合
  • String.Join,取一个分隔符和一个可枚举的字符串。 result = String.join("#", nodes.Select(x=> x.InnerText))

标签: c# string foreach concatenation delimiter


【解决方案1】:

在这种情况下使用string.Join 是一个不错的选择。

string result = string.Join("#", nodes.Select(n => n.InnerText))

【讨论】:

    【解决方案2】:

    您可以使用.IndexOf 了解foreach 循环中节点的当前索引。只要节点的当前索引不等于(nodes.Count - 1),您就应该连接node.InnerText

    foreach (var node in nodes)
    {
        //You can identify the last element in nodes like below
        if (nodes.IndexOf(node) != nodes.Count - 1) 
        {
            result += node.InnerText;
        }
    }
    

    【讨论】:

    • 为什么要投反对票?请注意解释。我只是给出了另一种方法。
    • 可能的原因太多了:回答一个明显的骗局。紧密循环中的字符串连接,仅限代码。我不喜欢以更笼统的方式对这些问题的投票模式,我在这里没有得到反对票或反对票
    • @xdtTransform 我刚刚很快发布了我的答案,并想在接下来的几分钟内更新。无论如何,你的评论是足够公平的。我同意你。我应该选择将问题标记为重复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 2020-03-03
    相关资源
    最近更新 更多