Cuál es la diferencia entre
alert("abc".substr(0,2));
y
alert("abc".substring(0,2));
Ambos parecen dar salida a "ab".
javascript
substring
Motor de diferencia
fuente
fuente
substring
supera a todos los demás en Chrome .slice
método,substring
no maneja el ajuste para parámetros negativos.substr
método y unsubstring
método"? Este es realmente el método preferido de sobrecarga?substr()
ser lo que podríamos llamar "pseudo-obsoleto" en la parte superior de la página de documentos aquí: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… - ¿Alguien tiene más información sobre esto, por ejemplo, ¿hay algún navegador que planee desaprobarsubstr()
en algún momento en el futuro? O como sugirió Steven Lu, ¿podría haber desventajas de rendimiento al usarsubstr()
en el futuro?Respuestas:
La diferencia está en el segundo argumento. El segundo argumento para
substring
es el índice para detenerse en (pero no incluir), pero el segundo argumento parasubstr
es la longitud máxima a devolver.¿Enlaces?
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring
fuente
String.prototype.substr()
está en desuso ... (Se define en el Anexo B del estándar ECMA-262, cuya introducción establece: "... Los programadores no deben usar o asumir el existencia de estas características y comportamientos al escribir nuevo código ECMAScript ... ")substring
( MDN ) toma los parámetros como(from, to)
.substr
( MDN ) toma los parámetros como(from, length)
.Actualización : MDN considera
substr
legado.Puede recordar que
substring
toma índices, al igual que otro método de extracción de cadenas, el corte .Al comenzar desde 0 puede usar cualquiera de los métodos.
fuente
.substring()
toma índices Puedes recordarlo porque es el único con una 'i' en el nombre..slice()
toma índices también.Como se insinuó en la respuesta de yatima2975, hay una diferencia adicional:
substr()
acepta una posición de inicio negativa como un desplazamiento desde el final de la cadena.substring()
no.De MDN :
Para resumir las diferencias funcionales:
substring(begin-offset, end-offset-exclusive)
donde begin-offset es0
o mayorsubstr(begin-offset, length)
donde begin-offset también puede ser negativofuente
Otro problema que encontré recientemente es que en IE 8,
"abcd".substr(-1)
retorna erróneamente"abcd"
, mientras que Firefox 3.6 regresa"d"
como debería.slice
Funciona correctamente en ambos.Más sobre este tema se puede encontrar aquí .
fuente
La principal diferencia es que
substr () le permite especificar la longitud máxima a devolver
substring () le permite especificar los índices y el segundo argumento NO incluye
Hay algunas sutilezas adicionales entre substr () y substring (), como el manejo de argumentos iguales y argumentos negativos. También tenga en cuenta que substring () y slice () son similares pero no siempre iguales.
fuente
slice
:"string".slice(2,-2); // "ri"
La diferencia es el segundo parámetro. Sus segundos parámetros, aunque ambos números, esperan dos cosas diferentes:
Cuando se usa la subcadena, el segundo parámetro es el primer índice que no incluye:
Cuando se usa substr, el segundo parámetro es el número de caracteres que se incluirán en la subcadena:
fuente
La gran diferencia es que
substr()
es un método obsoleto que todavía se puede usar, pero se debe usar con precaución porque se espera que se elimine por completo en algún momento en el futuro. Debería trabajar para eliminar su uso de su código. Y elsubstring()
método tuvo éxito y especificó el anterior.fuente
substr()
? Lo he leído de varias personas, pero no puedo encontrar ninguna información en la web que respalde la declaración. Además, Mozilla no lo incluye en la lista de características obsoletas / obsoletas: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…String.prototype.substr()
se define en el Anexo B del estándar ECMA-262, cuya introducción establece: "... Los programadores no deben usar o asumir la existencia de estas características y comportamientos al escribir un nuevo código ECMAScript ..."substr()
realmente se nota como obsoleto en algunos documentos.Slice vs Substr vs Substring vs [] Métodos
Hay beneficios de rendimiento para cada uno de estos métodos de JavaScript. Utilice estas funciones en consecuencia.
fuente
substring (): tiene 2 parámetros "inicio" y "fin".
Si no se especifica el parámetro final, se extraen todos los caracteres desde la posición inicial hasta el final de la cadena.
Si el valor del parámetro de inicio es mayor que el valor del parámetro de finalización, este método intercambiará los dos argumentos. Esto significa que start se usará como end y end se usará como start.
substr () : tiene 2 parámetros "inicio" y "cuenta".
El parámetro de inicio es obligatorio y especifica la posición donde comenzar la extracción.
El parámetro count es opcional y especifica el número de caracteres a extraer.
Si no se especifica el parámetro de conteo, se extraen todos los caracteres desde la posición inicial hasta el final de la cadena. Si count es 0 o negativo, se devuelve una cadena vacía.
fuente
subcadena (startIndex, endIndex (no incluido))
substr (startIndex, cuántos caracteres)
fuente