Erhalte und ersetze die letzte Zahl in einer Zeichenkette mit JavaScript oder jQuery

8

Wenn ich die Zeichenfolge habe:

var myStr = "foo_0_bar_0";

und ich denke, wir sollten eine Funktion namens getAndIncrementLastNumber(str)

haben

Also wenn ich das tue:

myStr = getAndIncrementLastNumber(str); // "foo_0_bar_1"

Nehmen wir an, dass es einen anderen Text anstelle von foo und bar geben könnte und dass möglicherweise nicht underscores vorhanden ist oder mehr als ein underscore ;

Gibt es eine Möglichkeit mit JavaScript oder jQuery mit .replace() und etwas RegEx ?

    
Mr_Nizzle 15.06.2012, 22:44
quelle

7 Antworten

15

Sie können den regulären Ausdruck /[0-9]+(?!.*[0-9])/ verwenden, um die letzte Zahl in einer Zeichenfolge zu finden (Quelle: Ссылка ). Diese Funktion, die diese Regex mit match (), parseInt () und replace () verwendet, sollte tun, was Sie brauchen:

%Vor%

Wahrscheinlich nicht besonders effizient, aber für kurze Strings sollte das keine Rolle spielen.

EDIT: Hier ist ein etwas besserer Weg, eine Callback-Funktion zu verwenden, anstatt die Zeichenfolge zweimal zu suchen:

%Vor%     
Brilliand 15.06.2012, 22:52
quelle
6

So mache ich es:

%Vor%

Geige

Oder auch das, besonderer Dank an Eric:

%Vor%

Geige

    
Fabrício Matté 15.06.2012 22:56
quelle
1

Probieren Sie diese Demo bitte Ссылка oder Ссылка

Code

%Vor%

oder

%Vor%     
Tats_innit 15.06.2012 22:57
quelle
0

Werden die Zahlen mit einigen Zeichen getrennt? Was ich von dir verstanden habe ist, dass deine Zeichenkette wie folgt aussehen könnte: 78_asd_0_798_fgsdflh__0_2323 !! Wenn dies der Fall ist, müssen Sie zuerst alle Zeichen und Unterstriche in einem Rutsch entfernen. Und dann, was auch immer du ausgestreift hast, kannst du entweder durch Komma oder etwas ersetzen.

So wirst du im Grunde genommen haben str1: 78_asd_0_798_fgsdflh__0_2323; str2: 78,0,0,798,2323.

str2 muss keine Zeichenkette sein, Sie können sie auch einfach in einem variablen Array speichern und die maximale Zahl erhalten und erhöhen.

Meine nächste Frage ist das genügt Ihr Problem? Wenn Sie die größte Zahl durch diese inkrementierte Zahl ersetzen müssen, müssen Sie das Auftreten dieser Zahl in str1 ersetzen und durch Ihr Ergebnis ersetzen.

Hoffe, das hilft. Zum Ersetzen mithilfe von jquery können Sie wahrscheinlich JQuery, das das Zeichen '-' aus der Zeichenfolge entfernt Es ist nur ein Beispiel, aber Sie werden eine Idee haben.

    
Krishna 15.06.2012 22:59
quelle
0

in Regex versuchen Sie Folgendes:

%Vor%

demo: Ссылка

    
mgraph 15.06.2012 22:52
quelle
0

Wenn Sie nur die letzte Zeichenkette erhalten möchten, verwenden Sie parseInt ()

%Vor%

Es prüft und gibt die richtige Antwort und speichert es in Variable b für 1-stellige Nummer und bis zu 3-stellige Nummer. Sie können es zu jedem machen, wenn Sie die Logik

haben     
sarath 19.09.2013 08:53
quelle
0

@Brilliant hat Recht, +1, ich wollte nur eine Version seiner Antwort mit 2 Modifikationen angeben:

  • Entfernen Sie den unnötigen Operator negative look-ahead .
  • Fügen Sie die Möglichkeit hinzu, am Ende eine Zahl hinzuzufügen, falls sie nicht existiert.

'' '

%Vor%

Tests :

%Vor%     
André Pena 22.05.2017 23:14
quelle

Tags und Links