2016-03-22 29 views
0

Ich habe MyCustomMacro, die mir die Liste der Zeichenfolgen zurückgibt. Ich muss diese Liste mit benutzerdefinierten Trennzeichen beetwen Listenelemente anzeigen.Get Artikel Index in Foreach

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

, aber dieser Code fügt auch "|" nach dem letzten Element hinzu.

Wie kann ich prüfen, ob das Element zuletzt in der Liste ist?

+1

Mögliche Duplikat [Wie beurteilen Sie den Index der aktuellen Iteration einer foreach-Schleife bekommen?] (Http://stackoverflow.com/questions/43021/how-do-you-get-the-index -of-the-current-iteration-einer-foreach-loop) – Bryan

Antwort

-1

können Sie verwenden beitreten Methode der String-Klasse:

{% string.join ("|", MyCustomMacro ("Ereignisse"))%}

+0

Dieser Code funktioniert nur in Kentico CMS, es ist ein K # -Makroausdruck. In C# müssen Sie nur 'string.join (" | ", new string [] {})' verwenden –

0

Sie tun können, es easly durch das:

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

Das funktioniert aber irgendwie wie ein Hack. Verwenden Sie eine Methode, die bereits dafür erstellt wurde wie 'string.Join()' –

3

, wenn Sie die Werte in einem String-Array erhalten können, können Sie tun:

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

Examples

2

Ich denke, ein sehr effizienter Weg ist String StringBuilder Klasse zu verwenden.

Etwas in diesen Zeilen.

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