2010-07-31 8 views
7

Ich habe eine Zeichenfolge, die eine Nummer enthält, die ich durch eine andere Nummer ersetzen möchte.Ersetzen einer Zahl in einer Zeichenfolge mit jquery

dh

<a href="" id="my_link">blah blah 32 blah blah</a> 

weiß, dass ich es nur in dieser Zeichenfolge zu 1 Nummer wird.

Ich kann so weit kommen:

var my_string = $('a#my_link').text(); 

Aber im Grunde weiß ich nicht, wie man dann eine Suche durchführt für eine Ziffer auf my_string und diese Zahl mit etwas anderem ersetzen.

Ist das mit jQuery möglich?

Danke für irgendwelche Ideen.

Antwort

10

Viele jQuery-Methoden wie .text() können eine Funktion akzeptieren, die den einzufügenden Wert zurückgibt.

Probieren Sie es aus:http://jsfiddle.net/6mBeQ/

$('#my_link').text(function(i,txt) {return txt.replace(/\d+/,'other value'); }); 

Dies beseitigt die Notwendigkeit, zweimal die Wähler zu laufen.

Auch wenn Sie ein Element durch seine ID erhalten, ist es tatsächlich ein wenig schneller, wenn Sie den Tag-Namen nicht enthalten.

Also statt

$('a#my_link') 

es ist besser

$('#my_link') 

wie ich oben tat zu tun.

+0

Jetzt ist dies eine Lösung, die nicht zwei Element-Greifer benötigt. Nett. –

+0

Danke @Gert. : o) – user113716

+0

Ich werde mich angewöhnen, Funktionen wie diese zu verwenden. Es ist eine wirklich nette Art, Sachen zu ersetzen. –

1

Dies wird für einfache natürliche Zahlen arbeiten, die 0 - 9.

var my_string = $('a#my_link').text().replace(/[0-9]+/, 'replacement'); 

Wenn Sie mehr komplexe Zahlen, wie Dezimalzahlen und negative Zahlen übereinstimmen, dann würde dies funktionieren:

var my_string = $('a#my_link').text().replace(/-?[0-9]*\.?[0-9]+/, 'replacement'); 

Wenn Sie komplexere Elemente wie Exponentialschreibweise oder Zahlen mit Kommas abgleichen möchten, müssen Sie die Regex entsprechend anpassen. Wie Sie dies tun, hängt davon ab, wie stringent Sie validieren möchten.

+0

Das hat das OP nicht gefragt. Es gibt das erste Zeichen der Zahl zurück (in diesem Fall '3'); er möchte die ** ganze ** Nummer durch eine andere Nummer ersetzen. – Krevan

+0

Danke, editiert :-) Allerdings wird die Regex die ganze Zahl, nicht die erste Ziffer entsprechen. – Jhong

4
var new_string = $('a#my_link').text().replace(/[0-9]+/, "somethingelse") 

Ersetzen Sie somethingelse mit, na ja, etwas anderes. :)

+0

hahahahha, mochte den letzten Teil – mrateb

2
$('a#my_link').text($('a#my_link').text().replace(/\d+/,'something')); 
+1

'$ ('ein # mein_link'). Text ($ (this) .text(). Ersetzen (/ \ d + /, 'etwas'));' sollte noch besser sein –

+2

@Mikulas Dite - Probieren Sie es aus und Sie werden feststellen, dass sich 'this' in Ihrem Beispiel nicht auf das Element bezieht, von dem Sie denken, dass es es ist. ;) –

0

Sie müssen zunächst durch jedes Wort in einer Schleife durch auf das Leerzeichen unter Verwendung des Split() -Funktion und sendet das Ergebnis an einen String-Array abspaltet.

Sobald Sie das tun, testen Sie jedes Wort für die Nummer. Wenn Sie die Nummer finden, verwenden Sie die Funktion jquery replacementWith(): http://api.jquery.com/replaceWith/

Hoffe, dass hilft.

Verwandte Themen