2016-05-10 27 views
0

Ich habe in Java und Python letzten 3,4 Jahren codiert. Jetzt entschied ich, dass ich Haskell lernen möchte.String Manipulation in Haskell

Ich habe eine Zeichenfolge in der Form:

"https://stackoverflow.com/users?page=1&tab=reputation&filter=all"

Ich brauche eine Funktion, die Seitenzahl erhöhen würde:

"https://stackoverflow.com/users?page=2&tab=reputation&filter=all"

und Diese Saite an:

"https://stackoverflow.com/users?page=3&tab=reputation&filter=all"

und so weiter ...

Ich bin sehr neu in Haskell und weiß nicht, wie Strings zu manipulieren. Wie schreibe ich eine solche Funktion?

+2

Eine Zeichenfolge in Haskell ist eine Liste von Zeichen (klingt vertraut?) Betrachten Sie "Data.Char.isDigit". Und vielleicht ein 'Filter'. –

+1

Hinweis: Alle Werte in Haskell sind unveränderlich, so dass Sie die Zeichenfolge nicht wirklich ändern können. Du musst ein neues bauen. – ApproachingDarknessFish

+2

Diese Frage ist jedoch zu breit. Nimm dir ein Haskell-Buch. [Learn You a Haskell für Great Good] (http://learnyouahaskell.com/) ist beliebt und kann online kostenlos gelesen werden. Nach den ersten paar Kapiteln sollten Sie in der Lage sein, dies selbst zu beantworten. –

Antwort

1

Wenn Sie bereits die genaue Position der Zahl in der String wissen würde ich empfehlen, eine Funktion mit

stoverString :: Int -> String 
stoverSTring n = "http://stackoverflow.com/users?page="++ show n 
       ++"&tab=reputation&filter=all" 

und dann map mit [Int] in Kombination verwenden, um zu erstellen alle String s Sie wünschen.

Angenommen, Sie möchten etwas herunterladen - die nächste Funktion, die Sie untersuchen sollten, ist mapM ein relatives der einfachen map-Funktion, die IO-Aktionen mit Ihrer Liste statt einfache Funktion Anwendung für jedes Element der Liste.