2011-01-11 5 views
5

So cheUtilizzando parseInt di JavaScript alla fine della stringa

parseInt(myString, 10) // "Never forget the radix" 

restituirà un numero, se i primi caratteri nella stringa sono numerica, ma come posso fare questo in JavaScript se ho una stringa come "Column5 "e vuoi incrementarlo al prossimo (" column6 ")?

Il numero di cifre alla fine della stringa è variabile.

+2

per favore non usare mai parseInt senza il secondo argomento, 10 qui, se non vuoi bug molto strani :-) – regilero

risposta

16
parseInt("column5".slice(-1), 10); 

È possibile utilizzare -1 o -2 per uno o due numeri a due cifre, rispettivamente.

Se si desidera specificare qualsiasi lunghezza, è possibile utilizzare il seguente per restituire le cifre:

parseInt("column6445".match(/(\d+)$/)[0], 10); 

È possibile che questo funziona per un certo periodo di numeri, fino a quando la stringa termina con uno o più numeri

+2

+1 per il, 10 in parse che molti altri hanno dimenticato! – regilero

+0

Cosa fai per 3 caratteri? o 4 o 5 o 12? –

+0

Mi piace, ma penso che .slice (6, string.length) ti darà le ultime X-molte cifre (un commento di la benhowdle89) – sova

1
var my_car="Ferrari"; 
var the_length=my_car.length; 
var last_char=my_car.charAt(the_length-1); 
alert('The last character is '+last_char+'.'); 

credito al http://www.pageresource.com/jscript/jstring1.htm

Poi basta incrementare last_char

+0

grazie per una risposta veloce! Ma cosa succede se il numero è un numero variabile di cifre?Mi aspetto di avere centinaia di colonne; x – sova

+0

Non sono sicuro se questo funzionerebbe se il numero è di 2 o più cifre. –

+2

Questo va bene, quindi. Lunghezza, questo calcolerà il numero di caratteri in una stringa – benhowdle89

3

Prova questo:

var match = myString.match(/^([a-zA-Z]+)([0-9]+)$/); 
if (match) { 
    return match[1] + (parseInt(match[2]) + 1, 10); 
} 

questo convertirà le stringhe come text10-text11, TxT1-Txt2, ecc. Funziona con numeri lunghi alla fine.

Aggiunto il radix alla chiamata parseInt poiché il valore parseInt predefinito è troppo magic per la fiducia.

Vedi qui per maggiori dettagli:

http://www.w3schools.com/jsref/jsref_parseInt.asp

in fondo si convertirà qualcosa come text010-text9 che non è buono;).

2

Dividere il numero dal testo, analizzarlo, incrementarlo e quindi concatenarlo. Se la stringa precedente è ben noto, "colonna" per esempio, si può fare qualcosa di simile:

var precedingString = myString.substr(0, 6); // 6 is length of "column" 
var numericString = myString.substr(7); 
var number = parseInt(numericString); 
number++; 

return precedingString + number; 
0
  1. Spalato la parola e il numero utilizzando RegEx.

  2. utilizzando parseInt() incrementa il numero.

  3. Aggiungi alla parola.

0

Basta provare a leggere la stringa char in char, controllando il suo codice ASCII. Se è da 48 a 57 hai il tuo numero. Prova con la funzione charCodeAt. Quindi basta dividere la stringa, incrementare il numero e il suo completamento.