javascript - ultimo - ¿Cuál es la diferencia entre substr y substring?
substring javascript ejemplo (8)
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 lo hace.
Desde developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… :
Si inicio es negativo, substr () lo usa como un índice de caracteres desde el final de la cadena.
Así que para resumir las diferencias funcionales:
substring(begin-offset, end-offset-exclusive)
donde begin-offset es 0
o mayor
substr(begin-offset, length)
donde begin-offset también puede ser negativo
Cuál es la diferencia entre
alert("abc".substr(0,2));
y
alert("abc".substring(0,2));
Ambos parecen salir "ab".
La diferencia es el segundo parámetro. Sus segundos parámetros, mientras que ambos números, esperan dos cosas diferentes:
Cuando se utiliza subcadena, el segundo parámetro es el primer índice que no incluye:
var s = "string";
s.substring(1, 3); // would return ''tr''
var s = "another example";
s.substring(3, 7); // would return ''ther''
Cuando se utiliza substr, el segundo parámetro es el número de caracteres que se incluirán en la subcadena:
var s = "string";
s.substr(1, 3); // would return ''tri''
var s = "another example";
s.substr(3, 7); // would return ''ther ex''
La diferencia está en el segundo argumento. El segundo argumento de la substring
es el índice para detenerse en (pero no incluir), pero el segundo argumento de la substr
es la longitud máxima para devolver.
¿Campo de golf?
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring
La principal diferencia es que
substr () le permite especificar la longitud máxima para devolver
subcadena () le permite especificar los índices y el segundo argumento NO es inclusivo
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.
//*** length vs indices:
"string".substring(2,4); // "ri" (start, end) indices / second value is NOT inclusive
"string".substr(2,4); // "ring" (start, length) length is the maximum length to return
"string".slice(2,4); // "ri" (start, end) indices / second value is NOT inclusive
//*** watch out for substring swap:
"string".substring(3,2); // "r" (swaps the larger and the smaller number)
"string".substr(3,2); // "in"
"string".slice(3,2); // "" (just returns "")
//*** negative second argument:
"string".substring(2,-4); // "st" (converts negative numbers to 0, then swaps first and second position)
"string".substr(2,-4); // ""
"string".slice(2,-4); // ""
//*** negative first argument:
"string".substring(-3); // "string"
"string".substr(-3); // "ing" (read from end of string)
"string".slice(-3); // "ing"
Otro problema que encontré recientemente es que en IE 8, "abcd".substr(-1)
devuelve erróneamente "abcd"
, mientras que Firefox 3.6 devuelve "d"
como debería. slice
funciona correctamente en ambos.
Más sobre este tema se puede encontrar rapd.wordpress.com/2007/07/12/javascript-substr-vs-substring .
Slice vs Substr vs Substring vs [] Métodos
Hay beneficios de rendimiento para cada uno de estos métodos javascript. Por favor, use estas funciones en consecuencia.
substr
( developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… ) toma parámetros como (from, length)
.
substring
( MDN ) toma parámetros como (from, to)
.
alert("abc".substr(1,2)); // returns "bc"
alert("abc".substring(1,2)); // returns "b"
Puede recordar que la substring
toma índices, al igual que otro método de extracción de cadena, slice .
Al comenzar desde 0 puedes usar cualquiera de los dos métodos.