Saltar al contenido

¿Cuál es la diferencia entre String.subString() y String.subSequence()

Por fin luego de tanto batallar hemos hallado el resultado de este atasco que algunos los usuarios de nuestro sitio han tenido. Si tienes algo que compartir no dudes en aportar tu comentario.

Solución:

subsecuencia

La subsecuencia es una generalización de subcadena, sufijo y prefix. Encontrar el más largo string que es una subsecuencia de dos o más cadenas se conoce como el problema de la subsecuencia común más larga.

Ejemplo: El string “anna” es una subsecuencia de la string “plátano”:

banana
 || ||
 an na

subcadena

Una subcadena de un string es un prefix de un sufijo de la string, y equivalentemente un sufijo de un prefix. Si uno string es una subcadena de otra, también es una subsecuencia, que es un concepto más general.

Ejemplo: El string “ana” es una subcadena (y una subsecuencia) de banana en dos compensaciones diferentes:

banana
 |||||
 ana||
   |||
   ana

Leer más aquí.

Pero en lo que respecta a Java, no hay ninguna diferencia en su uso, como se indica claramente en el javadoc. Además, como se indica allí, el método subSequence solo se ha implementado en clase String para mantenerlo en conformidad con la CharSequence interfaz. Y el nombre de este método es, de hecho, un nombre inapropiado.

Para entender esto, lo primero que debe saber es cuál es la diferencia entre subcadena y subsecuencia

subcadena es un continuo parte o subparte de un string

mientras que

subsecuencia es la parte de un string o secuencia, que puede ser continua o no pero la pedido de los elementos se mantiene

Por ejemplo, digamos que tenemos las siguientes cadenas:

str_a="hello there"
str_b="hello"
str_c="ello th"
str_d="hllo"
str_e="ho hre"
str_f="there hello"

str_b es una subcadena de str_a, str_c es también una subcadena de str_a pero str_d no es una subcadena de str_a como esta subcadena no es continuo.

Ahora todas las subcadenas son subsecuencias ya que se mantiene el orden.

str_d es una subsecuencia de str_a, str_e es también una subsecuencia de str_a sin embargo str_f no es una subsecuencia de str_a como en este caso el pedido no se mantiene

Ahora, para java, no hay una aclaración adecuada con respecto a estos métodos en javadoc.

Utilizando str.subSequence(begin, end) devuelve una CharSequence que es una forma de solo lectura de la string representado como una secuencia de caracteres. Por ejemplo:

String string = "Hello";
CharSequence subSequence = string.subSequence(0, 5);

Se lee solo en el sentido de que no se puede cambiar el chars dentro de CharSequence sin instanciar una nueva instancia de un CharSequence.

Si tienes que usar str.subSequence(begin, end), puede convertir el resultado en un String:

String string = "Hello";
String subSequence = (String) string.subSequence(0, 5);

y usa todo lo normal String a los operadores les gusta subSequence += " World";

valoraciones y reseñas

Nos encantaría que puedieras difundir este enunciado si lograste el éxito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *