Cookbook/Lists and strings
From HaskellWiki
(Difference between revisions)
(→Converting case) |
|||
| Line 154: | Line 154: | ||
import Char | import Char | ||
toUpper 'a' --> "A" | toUpper 'a' --> "A" | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
</haskell> | </haskell> | ||
|- | |- | ||
| Line 168: | Line 161: | ||
import Char | import Char | ||
toLower 'A' --> "a" | toLower 'A' --> "a" | ||
| + | </haskell> | ||
| + | |- | ||
| + | | converting a string to upper-case | ||
| + | | [http://haskell.org/ghc/docs/latest/html/libraries/base/Data-Char.html#v%3AtoUpper toUpper], [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map map] | ||
| + | |<haskell> | ||
| + | import Char | ||
| + | map toUpper "Foo Bar" --> "FOO BAR" | ||
</haskell> | </haskell> | ||
|- | |- | ||
Revision as of 11:42, 23 April 2009
Since strings are lists of characters, you can use any available list function.
Contents |
1 Combining strings
| Problem | Solution | Examples |
|---|---|---|
| combining two strings | (++) | "foo" ++ "bar" --> "foobar" |
| combining many strings | concat | concat ["foo", "bar", "baz"] --> "foobarbaz" |
2 Accessing substrings
| Problem | Solution | Examples |
|---|---|---|
| accessing the first character | head | head "foo bar baz" --> 'f' |
| accessing the last character | last | last "foo bar baz" --> 'z' |
| accessing the character at a given index | (!!) | "foo bar baz" !! 4 --> 'b' |
accessing the first n characters
| take | take 3 "foo bar baz" --> "foo" |
accessing the last n characters
| TODO | TODO |
accessing the n characters starting from index m
| drop, take | take 4 $ drop 2 "foo bar baz" --> "o ba" |
3 Splitting strings
| Problem | Solution | Examples |
|---|---|---|
| splitting a string into a list of words | words | words "foo bar\t baz\n" --> ["foo","bar","baz"] |
| splitting a string into two parts | splitAt | splitAt 3 "foo bar baz" --> ("foo"," bar baz") |
4 Multiline strings
"foo\ \bar" --> "foobar"
5 Converting between characters and values
| Problem | Solution | Examples |
|---|---|---|
| converting a character to a numeric value | ord | import Char ord 'A' --> 65 |
| converting a numeric value to a character | chr | import Char chr 99 --> 'c' |
6 Reversing a string by words or characters
| Problem | Solution | Examples |
|---|---|---|
| reversing a string by characters | reverse | reverse "foo bar baz" --> "zab rab oof" |
| reversing a string by words | words, reverse, unwords | unwords $ reverse $ words "foo bar baz" --> "baz bar foo" |
| reversing a string by characters by words | words, reverse, map, unwords | unwords $ map reverse $ words "foo bar baz" --> "oof rab zab" |
7 Converting case
| Problem | Solution | Examples |
|---|---|---|
| converting a character to upper-case | toUpper | import Char toUpper 'a' --> "A" |
| converting a character to lower-case | toLower | import Char toLower 'A' --> "a" |
| converting a string to upper-case | toUpper, map | import Char map toUpper "Foo Bar" --> "FOO BAR" |
| converting a string to lower-case | toLower, map | import Char map toLower "Foo Bar" --> "foo bar" |
8 Interpolation
TODO
9 Performance
For high performance requirements (where you would typically consider C), consider using Data.ByteString.
10 Unicode
TODO
