Macros 获取Foreach中的项索引

Macros 获取Foreach中的项索引,macros,kentico,Macros,Kentico,我有一个MyCustomMacro,它返回字符串列表。 我需要用自定义分隔符和列表元素显示此列表 {% foreach (ev in MyCustomMacro("events") ) { ev + " | "; }; #%} 但该代码还在最后一个元素后添加“|” 如何检查该元素在列表中的最后一个?您可以通过以下方式轻松完成: {% result=""; foreach (ev in MyCustomMacro("events") ) { result+=

我有一个MyCustomMacro,它返回字符串列表。 我需要用自定义分隔符和列表元素显示此列表

{% 
foreach (ev in MyCustomMacro("events") )
{ 
  ev + " | "; 
};
#%}
但该代码还在最后一个元素后添加“|”


如何检查该元素在列表中的最后一个?

您可以通过以下方式轻松完成:

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

您可以通过以下方式轻松完成:

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

如果可以获取字符串数组中的值,则可以执行以下操作:

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

如果可以获取字符串数组中的值,则可以执行以下操作:

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

您可以使用string类的join方法:


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

您可以使用string类的join方法:


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

我认为一种更有效的方法是使用string-StringBuilder类

这句话有点意思

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

我认为一个非常有效的方法是使用StringBuilder类

这句话有点意思

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

这部作品的可能复制品,但有点像黑客。使用已经为此创建的方法,例如
string.Join()
,这很有效,但有点像黑客。使用已为此创建的方法,如
string.Join()
此代码仅适用于Kentico CMS,它是一个K#宏表达式。在C#中,只需使用
string.join(“|”,新字符串[]{})
此代码仅在Kentico CMS中有效,它是一个K#宏表达式。在C#中,您只需要使用
string.join(“|”),newstring[]{}