2016-03-22 3 views
0

私は文字列のリストを返すMyCustomMacroを持っています。 このリストには、カスタムセパレータのリスト要素を表示する必要があります。Foreachのアイテムインデックスを取得

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

このコードでは、最後の要素の後に "|"も追加されます。

その要素がリストの最後にあることを確認するにはどうすればよいですか?

+1

可能な重複http://stackoverflow.com/questions/43021/how-do-you-get-the-index -of-the-foreach-loop-of-foreach-loop) – Bryan

答えて

-1

参加:あなたはあなたが行うことができます文字列配列内の値を得ることができる場合

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

このコードはKentico CMSでのみ動作し、K#マクロ式です。 C#では 'string.join(" | "、new string [] {})'のみを使う必要があります。 –

0

あなたは、このことにより、イースリーそれを行うことができます:あなたが使用することができます

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

Examples

+0

これは動作しますが、多少のハックです。 'string.Join()'のようにすでに作成されているメソッドを使用してください。 –

3

文字列クラスのメソッド:

{%string.join( "|"、MyCustomMacro( "events") )%}

2

私は非常に効率的な方法は、StringBuilderクラスの文字列を使用することだと思います。

これらの行に何かがあります。

{% 
    var builder = new StringBuilder(); 
    foreach (ev in MyCustomMacro("events")) 
    { 
    builder.append(ev + " | "); 
    }; 
    result = String.Join("|", builder.Split('|')); 
%} 
[あなたは、foreachループの現在の繰り返しのインデックスを取得する方法は?](の