in

Cómo dividir una cadena en Java con delimitador

En Java, dividir la cuerda es una operación importante y generalmente utilizada al codificar. Java proporciona múltiples formas de dividir la cuerda. Pero la forma más común es utilizar el método split () de la clase String. En esta sección, aprenderemos cómo dividir una cadena en Java con delimitador. Junto con esto, también aprenderemos algunos otros métodos para dividir la cadena, como el uso de la clase StringTokenizer, el método Scanner.useDelimiter (). Antes de pasar al tema, entendamos lo que es delimitador.

¿Qué es un delimitador?

En Java, delimitadores son los caracteres que dividen (separan) la cadena en tokens. Java nos permite definir cualquier carácter como delimitador. Hay muchos métodos de división de cadenas proporcionados por Java que utilizan caracteres de espacio en blanco como delimitador. los delimitador de espacios en blanco es el delimitador predeterminado en Java.

Antes de pasar al programa, comprendamos el concepto de cadena.

La cadena se compone de dos tipos de texto que son tokens y delimitadores. Los tokens son las palabras significativas y los delimitadores son los caracteres que dividen o separan los tokens. Entendamos con un ejemplo.

Para entender el delimitador en Java, debemos ser amigables con la expresión regular de Java. Es necesario cuando el delimitador se usa como un carácter especial en las expresiones regulares, como (.) Y (|).

Ejemplo de delimitador

Cuerda: Javatpoint es el mejor sitio web para aprender nuevas tecnologías.

En la cadena anterior, los tokens son, Javatpoint es el mejor sitio web para aprender nuevas tecnologíasy los delimitadores son espacios en blanco entre las dos fichas.

¿Cómo dividir una cadena en Java con delimitador?

Java proporciona la siguiente forma de dividir una cadena en tokens:

Usando el método Scanner.next ()

Es el método de la clase Scanner. Encuentra y devuelve el siguiente token del escáner. Divide la cadena en tokens por delimitador de espacios en blanco. El token completo se identifica mediante la entrada que coincide con el patrón delimitador.

Sintaxis:

Lanza NoSuchElementException si el siguiente token no está disponible. También lanza IllegalStateException si el escáner de entrada está cerrado.

Creemos un programa que divida un objeto de cadena usando el método next () que usa espacios en blanco para dividir la cadena en tokens.

SplitStringExample1.java

Producción:

Javatpoint
is
the
best
website
to
learn
new
technologies

En el programa anterior, un punto para notar que en el constructor de la clase Scanner en lugar de pasar System.in hemos pasado una variable de cadena str. Lo hemos hecho porque antes de manipular la cadena, necesitamos leer la cadena.

Usando el método String.split ()

los separar() método del Cuerda La clase se usa para dividir una cadena en una matriz de objetos String según el delimitador especificado que coincide con la expresión regular. Por ejemplo, considere la siguiente cadena:

La cadena anterior está separada por comas. Podemos dividir la cadena anterior usando la siguiente expresión:

La expresión anterior divide la cadena en tokens cuando los tokens están separados por una coma (,) del carácter delimitador especificado. La cadena especificada se divide en los siguientes objetos de cadena:

Hay dos variantes de los métodos split ():

  • dividir (cadena de expresiones regulares)
  • split (String regex, int limit)

String.split (String regex)

Divide la cadena de acuerdo con la expresión regular especificada. Podemos usar un punto (.), Espacio (), coma (,) y cualquier carácter (como z, a, g, l, etc.)

Sintaxis:

El método analiza una expresión regular delimitadora como argumento. Devuelve una matriz de objetos String. Lanza PatternSyntaxException si la expresión regular analizada tiene una sintaxis no válida.

Usemos el método split () y dividamos la cadena con una coma.

SplitStringExample2.java

Producción:

En el ejemplo anterior, el objeto de cadena está delimitado por una coma. El método split () divide la cadena cuando encuentra la coma como delimitador.

Veamos otro ejemplo en el que usaremos múltiples delimitadores para dividir la cadena.

SplitStringExample3.java

Producción:

If
you
don
t
like
something
change
it

String.split (String regex, int limit)

Nos permite dividir la cadena especificada por delimitador pero en un número limitado de tokens. El método acepta dos parámetros regex (una expresión regular delimitante) y limit. El parámetro de límite se utiliza para controlar el número de veces que se aplica el patrón que afecta a la matriz resultante. Devuelve una matriz de objetos String calculada dividiendo la cadena dada de acuerdo con el parámetro de límite.

Existe una ligera diferencia entre la variante de los métodos split () que limita el número de tokens devueltos después de invocar el método.

Sintaxis:

Lanza PatternSyntaxException si la expresión regular analizada tiene una sintaxis no válida.

El parámetro de límite puede ser positivo, negativo o igual al límite.

SplitStringExample4.java

Producción:

When the limit is positive:
Number of tokens: 2
46
-567-7388

When the limit is negative: 
Number of tokens: 2
Life,is,
our,creation

When the limit is equal to 0:
Number of tokens: 2
Hello
how are you?

En el fragmento de código anterior, vemos que:

  • Cuando el límite es 2, el número de tokens en la matriz de cadenas es dos.
  • Cuando el límite es -3, la cadena especificada se divide en 2 tokens. Incluye los espacios finales.
  • Cuando el límite es 0, la cadena especificada se divide en 2 tokens. En este caso, se omite el espacio final.

Ejemplo de cadena delimitada por tubería

Dividir una cadena delimitada por tubería (|) es un poco complicado. Porque la tubería es un carácter especial en la expresión regular de Java.

Vamos a crear una cadena delimitada por tubería y dividirla por tubería.

SplitStringExample5.java

Producción:

L
i
f
e
|
i
s
|
y
o
u
r
|
c
r
e
a
t
i
o
n

En el ejemplo anterior, vemos que no produce el mismo resultado que otros rendimientos delimitadores. Debería producir una serie de tokens, vida tuya y creación, pero no lo es. Da el resultado, como hemos visto en la salida anterior.

La razón detrás de esto es que el motor de expresiones regulares interpreta el delimitador de tubería como un Operador lógico OR. El motor de expresiones regulares divide la cadena en una cadena vacía.

Para resolver este problema, debemos escapar el carácter de tubería cuando se pasa al método split (). Usamos la siguiente declaración para escapar del carácter de tubería:

Agrega un par de barra invertida (\) antes del delimitador para escapar de la tubería. Después de realizar los cambios en el programa anterior, el motor de expresiones regulares interpreta el carácter de tubería como un delimitador.

Otra forma de escapar del carácter de barra vertical es poner el carácter de barra vertical dentro de un par de corchetes, como se muestra a continuación. En la API de expresiones regulares de Java, el par de corchetes actúa como una clase de carácter.

Ambas declaraciones anteriores producen el siguiente resultado:

Producción:

Usando la clase StringTokenizer

Java StringTokenizer es una clase heredada que se define en el paquete java.util. Nos permite dividir la cadena en tokens. El programador no lo usa porque el método split () de la clase String hace el mismo trabajo. Entonces, el programador prefiere el método split () en lugar de la clase StringTokenizer. Usamos los siguientes dos métodos de la clase:

StringTokenizer.hasMoreTokens ()

El método itera sobre la cadena y comprueba si hay más tokens disponibles en la cadena del tokenizador. Devuelve verdadero si hay un token disponible en la cadena después de la posición actual; de lo contrario, devuelve falso. Internamente llama al nextToken () si devuelve verdadero y el método nextToken () devuelve el token.

Sintaxis:

StringTokenizer.nextToken ()

Devuelve el siguiente token del tokenizador de cadena. Lanza NoSuchElementException si los tokens no están disponibles en el tokenizador de cadenas.

Sintaxis:

Creemos un programa que divida la cadena usando la clase StringTokenizer.

SplitStringExample6.java

Producción:

Uso del método Scanner.useDelimiter ()

Java Escáner clase proporciona el useDelimiter () método para dividir la cadena en tokens. Hay dos variantes del método useDelimiter ():

  • useDelimiter (patrón de patrón)
  • useDelimiter (patrón de cadena)

useDelimiter (patrón de patrón)

El método establece el patrón delimitador del escáner en la cadena especificada. Analiza un patrón delimitador como argumento. Devuelve el escáner.

Sintaxis:

useDelimiter (patrón de cadena)

El método establece el patrón delimitador del escáner en un patrón que se construye a partir de la cadena especificada. Analiza un patrón delimitador como argumento. Devuelve el escáner.

Sintaxis:

Nota: Los dos métodos anteriores se comportan de la misma manera, ya que invocan useDelimiter (Pattern.compile (pattern)).

En el siguiente programa, hemos utilizado el método useDelimiter () para dividir la cadena.

SplitStringExample7.java

Deja una respuesta

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

01LSVk4Bv676dDq7QkL68Oi 1.1633624315.fit lim.size 1200x630

Revisión del sistema de malla Gryphon AX (paquete de 2)

how many aladdin movies are there

¿Cuántas películas de Disney Aladdin hay?