2012-06-08 13 views
11

powiedzmy mam ciąg jak poniżej:Jak usunąć koniec sznurka, zaczynając od danego wzoru?

var str = "/abcd/efgh/ijkl/xxx-1/xxx-2"; 

jaki sposób, przy użyciu JavaScript i/lub jQuery, usunąć część str zaczynając xxx, do końca str?

+0

Więc chcesz '' xxx-1/xxx-2 "' tylko? –

+0

Nie, chcę usunąć go z mojego ciągu i pobrać nowy ciąg bez 'xxx-1/xxx-2' – user765368

+0

@Derek: think OP chce:' "/ abcd/efgh/ijkl /" ' – haylem

Odpowiedz

22
str.substring(0, str.indexOf("xxx")); 
+2

Uwaga: użyj 'str = str.substring (0, str.indexOf (" xxx "));' jeśli celem jest przypisanie zmodyfikowanej wartości do tej samej zmiennej. W ten sposób powstanie pusty łańcuch, jeśli 'xxx' nie pojawi się w oryginalnym łańcuchu. – nnnnnn

1

To zajmie wszystko od początku łańcucha do początku xxx.

str.substring(0,str.indexOf("xxx")); 
7

Wystarczy:

s.substring(0, s.indexOf("xxx")) 

Bezpieczniejsza wersja obchodzenia nieprawidłowe dane i brak pasujących wzorców byłoby:

function trump(str, pattern) { 
    var trumped = ""; // default return for invalid string and pattern 

    if (str && str.length) { 
    trumped = str; 
    if (pattern && pattern.length) { 
     var idx = str.indexOf(pattern); 

     if (idx != -1) { 
     trumped = str.substring(0, idx); 
     } 
    } 
    } 
    return (trumped); 
} 

który chcesz zadzwonić z:

var s = trump("/abcd/efgh/ijkl/xxx-1/xxx-2", "xxx"); 
+1

Hmm, @WilliamVanRensselaer pokonał nas wszystkich, zasługuje na to :) – haylem

+0

Powinienem ćwiczyć umiejętność pisania na klawiaturze, abym mógł pisać szybciej! :) –

+2

trump należy przyciąć: D plus jeden: D – Gogol

2

Spróbuj tego:

str.substring(0, str.indexOf("xxx")); 

indexOf znajdzie pozycję xxx i substring będzie wyciąć kawałek chcesz.

0

Spróbuj użyć string.slice(start, end):

Jeśli znasz dokładną liczbę znaków, które chcesz usunąć, z przykładu:

var str = "/abcd/efgh/ijkl/xxx-1/xxx-2"; 
new_str = str.slice(0, -11); 

Spowodowałoby str_new == '/abcd/efgh/ijkl/'

Dlaczego jest to przydatne : Jeśli 'xxx' odnosi się do dowolnego ciągu znaków (zgodnie z OP), tj .: "abc", "1k3", itp., a nd Nie wiesz z góry, czym mogą być (tj. Nie jest stała), zaakceptowane odpowiedzi, a także większość innych nie będzie działać.

Powiązane problemy