usar una separar que programacion por palabra letras extraer espacios ejemplos delimitador como caracteres cadena c#

una - Comparación de cuerdas C#- coincidencia de palabras completas



split espacios c# (6)

Tengo dos cadenas:

string1 = "theater is small"; string2 = "The small thing in the world";

Necesito verificar si la cadena "the" está presente en las cuerdas o no.
Puedo usar la función contains, pero ¿puede hacer una coincidencia de palabra completa? es decir, ¡no debería coincidir con el "teatro" de string1!


La solución más simple es usar expresiones regulares y la palabra delimitador de límites /b :

bool result = Regex.IsMatch(text, "//bthe//b");

o, si quiere encontrar mayúsculas no coincidentes,

bool result = Regex.IsMatch(text, "//bthe//b", RegexOptions.IgnoreCase);

( using System.Text.RegularExpressons )

Alternativamente, puede dividir su texto en palabras individuales y buscar en la matriz resultante. Sin embargo, esto no siempre es trivial porque no es suficiente para dividir en espacios en blanco; esto ignoraría toda la puntuación y arrojaría resultados incorrectos. Una solución es volver a utilizar expresiones regulares, a saber, Regex.Split .


Podría usar una expresión regular en su lugar. De esta forma, puede especificar que solo desea el espacio o el final de la línea al final.


Usando las respuestas aquí hice este método de extensión que encuentra varias palabras en un texto, devuelve la cantidad de palabras encontradas e ignora la coincidencia de casos.

public static int Search(this String text, params string[] pValores) { int _ret = 0; try { var Palabras = text.Split(new char[] { '' '', ''.'', ''?'', '','', ''!'', ''-'', ''('', '')'', ''"'', ''/''' }, StringSplitOptions.RemoveEmptyEntries); foreach (string word in Palabras) { foreach (string palabra in pValores) { if (Regex.IsMatch(word, string.Format(@"/b{0}/b", palabra), RegexOptions.IgnoreCase)) { _ret++; } } } } catch { } return _ret; }

Uso:

string Text = @"''Oh, you can''t help that,'' (said the Cat) ''we''re all mad here. I''m MAD. ""You"" are mad.''"; int matches = Text.Search("cat", "mad"); //<- Returns 4

No es perfecto, pero funciona.


Utilice el método Regex.IsMatch usando /bthe/b , /b representa un delimitador de límite de palabra.

// false bool string1Matched = Regex.IsMatch(string1, @"/bthe/b", RegexOptions.IgnoreCase); // true bool string2Matched = Regex.IsMatch(string2, @"/bthe/b", RegexOptions.IgnoreCase);


puedes si agregas el espacio en la palabra que examinas


str.Split().Contains(word);

o

char[] separators = { ''/n'', '','', ''.'', '' '' }; // add your own str.Split(separators).Contains(word);