2010-07-31 17 views
7

Ho una stringa che contiene un numero che vorrei sostituire con un altro numero.Sostituzione di un numero in una stringa con jquery

cioè

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

So che c'è solo andare a essere 1 numero in questa stringa.

posso arrivare a questo punto:

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

Ma in fondo non so come poi eseguire una ricerca su my_string per un numero e sostituire quel numero con qualcos'altro.

È possibile con jQuery?

Grazie per qualsiasi idea.

risposta

10

Molti metodi jQuery come .text() possono accettare una funzione che restituisce il valore da inserire.

Provalo:http://jsfiddle.net/6mBeQ/

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

Questo elimina la necessità di eseguire il selettore per due volte.

Inoltre, quando si ottiene un elemento tramite il suo ID, è in realtà un po 'più veloce se non si include il nome del tag.

Così, invece di

$('a#my_link') 

è meglio fare

$('#my_link') 

come ho fatto in precedenza.

+0

Ora, questa è una soluzione che non richiede due elementi. Bello. –

+0

Grazie a @Gert. : o) – user113716

+0

Avrò bisogno di prendere l'abitudine di usare funzioni del genere. È un modo davvero carino per sostituire le cose. –

1

Questo funziona per i numeri naturali semplici contenenti 0 - 9.

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

Se è necessario abbinare i numeri più complessi, come i decimali e numeri negativi, allora questo dovrebbe funzionare:

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

Se è necessario abbinare ancora più complessi, come la notazione esponenziale o i numeri con virgole, è necessario modificare l'espressione regolare in modo appropriato: in questo modo si dipenderà da quanto si vuole validamente convalidare.

+0

Non è quello che ha chiesto l'OP. Restituirà il primo carattere del numero ('3' in questo caso); vuole sostituire il ** numero ** con un altro numero. – Krevan

+0

Grazie, modificato :-) Tuttavia, la regex corrisponderà al numero intero, non alla prima cifra. – Jhong

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

Sostituire somethingelse con, beh, qualcosa di diverso. :)

+0

hahahahha, è piaciuta l'ultima parte – mrateb

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

'$ ('a # mio_link'). Testo ($ (this) .text(). Replace (/ \ d + /, 'something'));' dovrebbe essere ancora meglio –

+2

@Mikulas Dite: provalo e scoprirai che "questo" nel tuo esempio non si riferisce all'elemento che pensi che sia. ;) –

0

Prima di tutto bisogna collegare attraverso ogni parola dividendo off sul carattere di spazio utilizzando la funzione split() e inviare il risultato ad una matrice di stringhe.

Una volta fatto, prova ogni parola per il numero. Se trovi il numero usa la funzione jquery replaceWith(): http://api.jquery.com/replaceWith/

Spero che questo aiuti.

Problemi correlati