2016-03-22 105 views
0

我有MyCustomMacro返回字符串列表。 我需要使用自定义分隔符beetwen列表元素来显示此列表。获取Foreach中的项目索引

{% 
foreach (ev in MyCustomMacro("events")) 
{ 
    ev + " | "; 
}; 
#%} 

但是这段代码还在最后一个元素后加“|”。

如何检查该元素是否在列表中的最后?

+1

的[你怎么foreach循环的当前迭代的指标?(可能的复制http://stackoverflow.com/questions/43021/how-do-you-get-the-index -of-the-current-ite-of-a-foreach-loop) – Bryan

回答

-1

您可以使用加入字符串类的方法:

{%string.join(“|”,MyCustomMacro(“events”)) )%}

+0

这段代码只在Kentico CMS中工作,它是一个K#宏表达式。在C#中,你只需要使用'string.join(“|”,新字符串[] {})'' –

0

您可以通过此做伊斯利:

{% result=""; 
    foreach (ev in MyCustomMacro("events")) 
    { 
    result+= ev + " | "; 
    }; 
    result.TrimEnd(" | ") 
%} 
+0

这起作用,但有点破解。使用一个已经为此创建的方法,例如'string.Join()' –

3

如果你能得到一个字符串数组中的值,你可以这样做:

string.Join("|", events[]) 

Examples

2

我想一个很有效的方法是使用字符串StringBuilder类。

东西在这些线上。

{% 
    var builder = new StringBuilder(); 
    foreach (ev in MyCustomMacro("events")) 
    { 
    builder.append(ev + " | "); 
    }; 
    result = String.Join("|", builder.Split('|')); 
%}