Pregunta ¿Cuál es la diferencia entre substr y substring?


Cuál es la diferencia entre

alert("abc".substr(0,2));

y

alert("abc".substring(0,2));

Ambos parecen producir "ab".


699
2017-09-19 11:40


origen


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 para substr es la longitud máxima para regresar.

¿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


773
2017-09-19 11:41



substr (MDN) 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"

Puedes recordar substring toma índices, al igual que otro método de extracción de cadenas, rebanada.

Al comenzar desde 0 puede usar cualquiera de los métodos.


254
2017-09-19 11:42



Como se insinuó en la respuesta de yatima2975, hay una diferencia adicional:

substr() acepta una posición inicial negativa como un desplazamiento desde el final de la cadena. substring() no.

De MDN:

Si el inicio es negativo, substr () lo usa como un índice de caracteres del   final de la cadena.

Entonces, 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


25
2018-02-09 19:51



Otra cosa que encontré recientemente es que en IE 8, "abcd".substr(-1) erróneamente regresa "abcd", mientras que Firefox 3.6 regresa "d" como debería. slice funciona correctamente en ambos.

Se puede encontrar más sobre este tema aquí.


22
2018-06-01 14:16



La diferencia es el segundo parámetro. Sus segundos parámetros, mientras que ambos números, esperan dos cosas diferentes:

Cuando se utiliza una subcadena, el segundo parámetro es el primer índice que no se 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 la cantidad 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'

7
2018-03-04 15:22



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 es inclusivo

Hay algunas sutilezas adicionales entre substr () y subcadena () 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".substr(2,4);     // "ring" (start, length) length is the maximum length to return
    "string".substring(2,4);  // "ri"   (start, end) indices / second value is NOT inclusive
    "string".slice(2,4);      // "ri"   (start, end) indices / second value is NOT inclusive

  watch out for substring swap
    "string".substr(3,2);     // "in"
    "string".substring(3,2);  // "r"    (swaps the larger and the smaller number)
    "string".slice(3,2);      // ""     (just returns "")

  handling negative arguments
    "string".substr(2,-4);    // ""
    "string".substring(2,-4); // "st"   (converts negative numbers to 0, then swaps first and second position)
    "string".slice(2,-4);     // ""

7
2018-03-09 02:29



Slice vs Substr vs Substring vs [] Métodos

Hay beneficios de rendimiento para cada uno de estos métodos de JavaScript. Por favor, use estas funciones en consecuencia.


4
2017-10-21 01:04



La gran diferencia es substr() es un método obsoleto que todavía se puede usar, pero se debe usar con precaución porque se espera que se eliminen por completo en el futuro. Debes trabajar para eliminar su uso de tu código. Y el substring() método tuvo éxito y especificó el anterior.


-6
2017-08-20 14:26