2011-01-11 23 views
5

Sé queUsando parseInt de JavaScript al final de la cadena

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

devolverá un número si los primeros caracteres de la cadena son numéricos, pero ¿cómo puedo hacer esto en JavaScript si tengo una cadena como "Column5 "y desea incrementarlo al siguiente (" columna 6 ")?

El número de dígitos al final de la cadena es variable.

+2

por favor, nunca use parseInt sin el segundo argumento, aquí 10, si no quiere errores muy extraños :-) – regilero

Respuesta

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

Puede utilizar -1 o -2 para una o dos números de dos dígitos, respectivamente.

Si desea especificar cualquier longitud, se puede utilizar el siguiente para volver los dígitos:

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

Lo anterior funcionará para cualquier longitud de los números, siempre y cuando la cadena termina con uno o más números

+2

+1 para el, 10 en el parseo ¡Que muchos otros olvidaron! – regilero

+0

¿Qué haces para 3 caracteres? o 4 o 5 o 12? –

+0

Me gusta esto, pero creo que .slice (6, string.length) te dará los últimos X-many digits (un comentario de 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+'.'); 

crédito a http://www.pageresource.com/jscript/jstring1.htm

A continuación, sólo incrementará last_char

+0

gracias por una respuesta rápida! Pero, ¿y si el número es una cantidad variable de dígitos?Espero tener cientos de columnas; x – sova

+0

No estoy seguro de si esto funcionaría si el número es de 2 dígitos o más. –

+2

Eso está bien, por lo tanto .length, esto calculará el número de caracteres en una cadena – benhowdle89

3

Prueba esto:

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

esto va a convertir cadenas como text10-text11, TxT1-Txt2, etc. Funciona con números largos al final.

Agregó el radix a la llamada parseInt ya que el valor parseInt predeterminado es demasiado magic para ser confiable.

Ver aquí para más detalles:

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

básicamente se va a convertir algo así como text010-text9 que no es bueno;).

2

Dividir el número del texto, analizarlo, incrementarlo y luego volver a concatenarlo. Si la cadena anterior es bien conocido, por ejemplo, "columna", se puede hacer algo como esto:

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. Dividir la palabra y el número usando expresiones regulares.

  2. usando parseInt() incrementa el número.

  3. Añadir a la palabra.

0

Solo intente leer la cadena char por char, verificando su código ASCII. Si es del 48 al 57, tienes tu número. Pruebe con la función charCodeAt. Luego solo divide la cuerda, incrementa el número y listo.

Cuestiones relacionadas