2016-08-03 11 views
1

Wie soll ich dynamische Zeichenfolge in der Mitte mit JS oder CSS trunkieren?Wie sollte ich dynamische Zeichenfolge in der Mitte mit JS oder CSS abschneiden?

Beispiel dynamischer string: -

<div class="selected-option">Test > run > test > run > test > run > test > run > test > run > test > run > test > run > run > test > run</div> 

Erwartete string: -

Test > run > test > run > ... run > run > test > run 

Vielen Dank im Voraus.

+0

Ich denke, er möchte das teilen und die Wörter so behalten, wie sie sind. Imo ist das nicht dasselbe wie dein Duplikat. Was denkst du, @RoryMcCrossan – eisbehr

+0

Nicht sicher, was du meinst. Die Funktion in der obersten Antwort des Duplikats ist genau das, was das OP benötigt. Siehe: http://jsfiddle.net/2eUYN/70/. Wenn Sie das DOM nicht aktualisieren möchten, ist die Logik der Funktion die Lösung. –

+0

Ich meine, dass dies nicht passieren sollte: http://jsfiddle.net/2eUYN/71/ @RoryMcCrossan – eisbehr

Antwort

2

Verwenden String#replace Methode mit der folgenden regex

((?:[^>]+>){4}).+((?:>[^>]+){4}) 

Regex explanation here.

Regular expression visualization

$('.selected-option').text(function(i, v) { 
 
    return v.replace(/((?:[^>]+>){4}).+((?:>[^>]+){4})/, '$1 ... $2') 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="selected-option">Test > run > test > run > test > run > test > run > test > run > test > run > test > run > run > test > run</div>



Wenn Sie nicht wollen, die > nach ... dann die folgende regex

((?:[^>]+>){4}).+>([^>]+(?:>[^>]+){3}) 

Regex explanation here.

Regular expression visualization

$('.selected-option').text(function(i, v) { 
 
    return v.replace(/((?:[^>]+>){4}).+>([^>]+(?:>[^>]+){3})/, '$1 ... $2') 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="selected-option">Test > run > test > run > test > run > test > run > test > run > test > run > test > run > run > test > run</div>

verwenden
+0

Es löste mein Problem. Danke für deine Antwort. – Gsk

+0

@Gsk: froh, Ihnen zu helfen :) –