如何使用 foreach 循环在列表中的短语之间添加分隔符?

Posted

技术标签:

【中文标题】如何使用 foreach 循环在列表中的短语之间添加分隔符?【英文标题】:How can I add a delimiter between phrases in a list with foreach loop? 【发布时间】: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=&gt; x.InnerText)) C# List<string> to string with delimiter的可能重复 相关***.com/questions/581448/… 【参考方案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 我刚刚很快发布了我的答案,并想在接下来的几分钟内更新。无论如何,你的评论是足够公平的。我同意你。我应该选择将问题标记为重复。

以上是关于如何使用 foreach 循环在列表中的短语之间添加分隔符?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 textarea 中的 @foreach 循环呈现 html

添加下一个按钮以循环遍历javascript中的元素

使用 ForEach SwiftUI Core Data 仅更改列表中的一项

@foreach 循环中的多种形式。如何使用 javascript 异步提交一个。 C# 核心剃刀

如何在 R 中嵌套 foreach 循环的内循环和外循环之间添加代码

在 ForEach 循环中绑定时,如何阻止 SwiftUI TextField 失去焦点?