Ich habe ein Problem in OCaml, ich lerne es gerade, aber ich bin immer noch ein Neuling. Ich möchte eine Funktion machen, die true zurückgibt, wenn der String leer ist oder nur Whitespace enthält und gleichzeitig das Auftreten von begin
und end
entfernt.OCaml Test, wenn eine Zeichenfolge fast leer ist oder Schlüsselwörter enthält
Ich habe bereits versucht dies:
let isEmptyString s =
let rec empty i =
if i < 0 then true
else
let c = String.get s i in
if c = ' ' || c = '\009' then empty (pred i)
else false
in
s = Str.global_replace(Str.regexp "begin") "" s;
s = Str.global_replace(Str.regexp "end") "" s;
empty (pred (String.length s))
Aber natürlich ist diese Funktion nicht funktioniert, wie ich es möchte, weil ich noch begin
in Formula.importNrAgentsFormula
erhalten, nachdem es nennen ... Hier ist meine Art, es zu nennen:
while true do
let input = read_line() in
if not (isEmptyString input) then
let (nr, f) = Formula.importNrAgentsFormula input in
incr counter;
flush stdout;
match choice with
| "graph" -> printRes (Graph.isSat ~verbose:verb nr f)
| _ -> printUsage()
else()
done
Wenn jemand mit mehr Erfahrungen in OCaml könnte mir den Fehler erkennen und erklären, würde ich i :)
Dank freuen n im Voraus,
Mit freundlichen Grüßen.
Juliens Antwort ist in Ordnung, aber ich würde etwas hinzufügen. Wie Sie es tun, werden Sie Ihre Zeichenfolge zweimal lesen, aber Sie konnten es nur einmal durch Schreiben von Str.global_replace (Str.regexp "\\ (Anfang \\) \\ | \\ (Ende \\)") "" s' – Lhooq