2017-02-18 1 views

Antwort

1

Sie können read_line verwenden, um die Eingabe vom Benutzer in einer Zeichenfolge, dann verwenden Str Modul um es zu teilen.

In utop (beachten Sie, dass die Benutzereingaben "1 2 3 4" thx to read_line())

#require "str";; 
#read_line() |> Str.split (Str.regexp " +") |> List.map int_of_string;; 
1 2 3 4 
- : int list = [1; 2; 3; 4] 
# 

Sie dann anspruchsvollere regexp verwenden können Sie Ihre Eingabe zu spalten (Komma, Semikolon verwalten. ..)

[im Zusammenhang mit dem zweiten Kommentar], nehmen wir an, Sie wollen die Zeichenfolge '"(5, 3, 5) (4,3,5)"' zu Tripel von Integer, teilen Sie zuerst Teilen Sie die Spalten entsprechend der Klammer (erste Instanz der Teilung unten), und teilen Sie dann für jede Gruppe die Elemente auf, die Sie benötigen:

Str.split (Str.regexp ")") s |> 
    List.map (fun x -> Str.split (Str.regexp "[(, ]+") x |> 
      List.map int_of_string) ;; 

Falls die Elemente nicht den gleichen Typ haben, benötigen Sie eine Funktion, die eine Liste als Eingabe akzeptiert und in ein Tupel übersetzt.

+0

require funktioniert nicht im arbeiten an einem Texteditor –

+0

ich lese ein wenig über das Str-Modul, aber das Problem hier ist, wie kann ich Paare oder Drillinge pro Beispiel von (int * char * int) in die Liste –

+0

für der 1. Kommentar: Wenn Sie Ihren Code kompilieren, verknüpfen Sie ihn mit dem pkg str (ocamlbuild -use-ocamlfind -pkg str yourappli.native). –

Verwandte Themen