Tokenizador de cadenas en C#

Muhammad Maisam Abbas 16 febrero 2024
Tokenizador de cadenas en C#

Este tutorial analizará la tokenización de una cadena en varias subcadenas en C#.

Tokenizador de cadenas usando la función String.Split() en C#

En el procesamiento del lenguaje natural, la tokenización de cadenas es el método de dividir una oración en todas las palabras individuales presentes en la oración. Estas palabras individuales se llaman tokens.

Tenemos la clase StringTokenizer en Java para propósitos similares. En C#, no tenemos directamente una implementación de la clase StringTokenizer, pero podemos lograr resultados similares usando la función String.Split() disponible en C#.

La función String.Split() puede dividir una cadena determinada en una matriz de subcadenas en función de algún separador o delimitador. Esta función toma la expresión regular para el delimitador o separador y devuelve una matriz de subcadenas.

Para tokenizar una cadena dada, podemos dividirla en subcadenas usando un espacio en blanco como separador o delimitador.

El siguiente fragmento de código muestra cómo podemos usar la función String.Split() para tokenizar una cadena en C#.

string inputString = "This is some input String";
string[] tokens = inputString.Split(' ');
foreach (string token in tokens) {
  Console.WriteLine(token);
}

Producción :

This
is
some
input
String

La salida muestra la cadena original This is some input String dividida en palabras individuales con el método String.Split() en C#.

Este tokenizador de cadenas es más poderoso que el StringTokenizer disponible en Java. El simple StringTokenizer solo permite un delimitador, mientras que el método anterior puede dividir la cadena de entrada en función de varios delimitadores.

El siguiente fragmento de código muestra un ejemplo para demostrar el poder de la función String.Split().

string inputString =
    "This is some input String, but, is it actually a good string? The answer is upto you.";
string[] tokens = inputString.Split(new char[] { ' ', ',', '?' });
foreach (string token in tokens) {
  Console.WriteLine(token);
}

Producción :

This
is
some
input
String

but

is
it
actually
a
good
string

The
answer
is
upto
you.

El fragmento de código anterior toma la cadena de entrada:

This is some input String, but, is it actually a good string? The answer is upto you.

El código lo divide en tokens en función de múltiples delimitadores. Las entradas vacías en la salida se pueden eliminar especificando StringSplitOptions.RemoveEmptyEntries como segundo parámetro de la función String.Split().

La ventaja de la clase StringTokenizer sobre este método es que también puede almacenar todos los delimitadores o tokens dentro de la cadena dada, mientras que la función String.Split() descarta los delimitadores.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Csharp String