¿Alguien me puede ayudar a codificar un cheque de subcadena eficaz en OCaml? Dadas dos cadenas, verifique si la primera contiene la segunda.Comprobación de subcadenas en Ocaml
Usando el módulo Str
, ¿podemos hacer esto?
¿Alguien me puede ayudar a codificar un cheque de subcadena eficaz en OCaml? Dadas dos cadenas, verifique si la primera contiene la segunda.Comprobación de subcadenas en Ocaml
Usando el módulo Str
, ¿podemos hacer esto?
Algo como esto podría funcionar:
let contains s1 s2 =
let re = Str.regexp_string s2
in
try ignore (Str.search_forward re s1 0); true
with Not_found -> false
Estas son algunas pruebas de la función:
# contains "abcde" "bc";;
- : bool = true
# contains "abcde" "bd";;
- : bool = false
# contains "abcde" "b.";;
- : bool = false
# contains "ab.de" "b.";;
- : bool = true
let contains_substring search target =
String.substr_index search target <> None
requiere Core, ¿no? – unhammer
esto no trabajará si 's2' tiene carácter especial de expresiones regulares secuencias en él, como '.'. Tendrás que llamar, 'Str.quote s2' primero. – nlucaroni
No creo que sea cierto. El propósito de 'regexp_string' es hacer coincidir exactamente una cadena en particular. Presumiblemente hace citas internas. Mis pruebas muestran que este código funciona bien. –
contiene un nombre incorrecto, porque ya tiene otro significado en las bibliotecas de extensión. – ygrek