【问题标题】:ForEach loop counter [duplicate]ForEach 循环计数器 [重复]
【发布时间】:2019-01-20 18:02:43
【问题描述】:

我正在做一些架构 javascipt/C# 编码,我有一个问题。我正在做面包屑模式以获得更多参考。我的目标是在此示例中以某种方式将计数器增加到 k,这样我就可以在 foreach 循环的最后一次迭代中停止显示逗号。现在,显然它们都以相同的速度增加。我在放置位置(counter++)以使其递增,然后即使在 for each 完成后也结束了。两个起始整数值都应保持原样。只是将计数器更改为 1 并不是我想要的 :) 计数器也必须在 ForEach 循环中。

伪代码如下:

k = 1;
counter = 0;

foreach(string str in array1)
{
Schema Code
Schema Code
for(i = 0; i > 0; i++)
{
k++
counter++ (not right location, but reference)
}

if(k < counter)
{
print a coma
}
else if(k >= counter)
{
print space
}

}

更新:我的代码将是位置所在的位置。我目前无法访问我的代码。但是 for each 贯穿页面上位置的数字。然后在最后一个位置它不会写逗号。

 <script type="application/ld+json">
 {
"context": "http://schema.org",
"type": "BreadcrumbList",
"itemListElement": [{
"type": "ListItem",
"position": 5,
}
}
</script>

【问题讨论】:

  • 您在寻找String.Join吗?
  • 如果上面的副本不能解决您的问题,请格式化您的代码,尝试创建一个minimal reproducible example 并解释您的具体问题所在。
  • 我更新了一点。目前我无法访问我的确切代码,但它就像伪代码一样。我不是在寻找 String.Join。我正在寻找一种方法来计算它通过 ForEach 运行的次数,然后添加一个等于该计数器的计数器以阻止逗号打印到屏幕。
  • 根本不清楚你在做什么或问题是什么,因为你展示的只是伪代码。例如,为什么有两个(实际上是三个)不同的计数器(kcounteri)?你在for (i = 0; i &gt; 0; i++) 中有一个无限循环(好吧,从技术上讲,一旦你达到你使用的任何类型的最大值,它就会爆炸),而且似乎没什么用。最后,您似乎只是在编写 JSON,在这种情况下,您应该使用特定于 JSON 的编写器(例如,序列化程序)。
  • @HereticMonkey 是的,这是一个糟糕的例子。 eulerspython 明白我要到达的地方并击中它的鼻子。谢谢!

标签: c# .net foreach


【解决方案1】:

我建议不要使用两个单独的计数器,而是先获取数组的长度,然后在计数器小于数组中的总项目数时使用计数器打印逗号。这样,当您完成时,您将比数组项目少一个逗号,并且在您打印的内容的末尾不会有逗号。

这有点复杂,但是,由于您真的不希望在打印的内容末尾有逗号,因此它可能最适合您的需求。

这里有一些基于你上面写的伪代码:

// the length of the array needs to be a constant because depending on
// what your code does it may change the array length as your loop runs    
const arrayLength = the length of your array when you start 
int commaCount = 0

foreach(string str in array1)
{
  Schema Code
  Schema Code
  if (commaCount < (arrayLength -1)) 
  // (< arrayLength -1) because then your last comma will reach 
  // (arrayLength -1) and then not increase any more the last time around
  {
    print a comma
  }  
}

如果有帮助,请告诉我。

(请忽略我的语法。这是伪代码,所以绝对不要复制粘贴我刚刚写的内容。)

【讨论】:

  • 是的!这是伟大的大声笑。我认为这肯定会满足我的需要。我知道这并不难。感谢您理解我的垃圾示例!
  • 不客气!我很高兴它有所帮助。
猜你喜欢
  • 2022-01-03
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 2010-11-14
  • 2011-05-19
  • 1970-01-01
相关资源
最近更新 更多