validar solo regulares regular numeros letras expresiones expresion ejemplos datos con f# pattern-matching

solo - Coincidencia de patrones al comienzo de una cadena en f#



sql where regular expression (3)

Estoy intentando hacer coincidir el comienzo de las cadenas en f #. No estoy seguro si tengo que tratarlos como una lista de personajes o qué. Cualquier sugerencia sera apreciada.

Aquí hay una versión del código psuedo de lo que intento hacer

let text = "The brown fox.." match text with | "The"::_ -> true | "If"::_ -> true | _ -> false

Por lo tanto, quiero ver el comienzo de la cadena y el partido. Tenga en cuenta que no estoy haciendo coincidir en una lista de cadenas, simplemente escribí lo anterior como una idea de la esencia de lo que estoy tratando de hacer.


¡ Patrones activos parametrizados para el rescate!

let (|Prefix|_|) (p:string) (s:string) = if s.StartsWith(p) then Some(s.Substring(p.Length)) else None match "Hello world" with | Prefix "The" rest -> printfn "Started with ''The'', rest is %s" rest | Prefix "Hello" rest -> printfn "Started with ''Hello'', rest is %s" rest | _ -> printfn "neither"


Sí, debe tratarlos como una lista de caracteres si desea usar una expresión de coincidencia.

Simplemente transforma la cadena con:

let text = "The brown fox.." |> Seq.toList

Luego puede usar una expresión de coincidencia, pero deberá usar caracteres (el tipo de elementos en la lista) para cada letra:

match text with | ''T''::''h''::''e''::_ -> true | ''I''::''f''::_ -> true | _ -> false

Como Brian sugiere que los patrones activos parametrizados son mucho más agradables, aquí hay algunos patrones útiles (vaya al final de la página).


También puedes usar un guardia en el patrón:

match text with | txt when txt.StartsWith("The") -> true | txt when txt.StartsWith("If") -> true | _ -> false