Mam String
jak "1 2 3 4 5"
. Jak mogę przekonwertować go na listę liczb całkowitych, takich jak [1,2,3,4,5]
w Haskell? Co się stanie, jeśli lista to "12345"
?Jak przekonwertować ciąg na listę liczb całkowitych w Haskell
Odpowiedz
Można użyć
Prelude> map read $ words "1 2 3 4 5" :: [Int]
[1,2,3,4,5]
Tutaj używamy words
podzielić "1 2 3 4 5"
na spacji tak, że mamy ["1", "2", "3", "4", "5"]
. Funkcja read
może teraz konwertować poszczególne ciągi na liczby całkowite. Ma typ Read a => String -> a
, dzięki czemu można go przekonwertować na dowolną klasę typu Read
, która obejmuje Int
. Z powodu zmiennej typu w typie zwracanym musimy podać powyższy typ.
W przypadku ciągu bez spacji musimy przekonwertować każdą Char
na listę pojedynczych elementów. Można to zrobić, stosując do tego (:"")
- String
to tylko lista Char
s. Następnie stosuje read
znowu jak przedtem:
Prelude> map (read . (:"")) "12345" :: [Int]
[1,2,3,4,5]
dziękuję dużo martin .. u rock .. –
Istnieje funkcja zdefiniowana w module Data.Char zwanego digitToInt. Przyjmuje znak i zwraca liczbę, o ile postać może być interpretowana jako cyfra szesnastkowa.
Jeśli chcesz użyć tej funkcji w pierwszym przykładzie, gdzie liczby oddzielone spacją, musisz unikać spacji. Można to zrobić za pomocą prostego filtra
> map digitToInt $ filter (/=' ') "1 2 1 2 1 2 1"
[1,2,1,2,1,2,1]
Drugi przykład, gdzie cyfry, gdzie w ogóle nie rozdzielone, jest nawet łatwiej, bo nie trzeba filtr
> map digitToInt "1212121"
[1,2,1,2,1,2,1]
Przypuszczam digitToInt jest lepszy niż przeczytać, ponieważ nie zależy od typu wyrażenia, które może być trudne (co z kolei oznacza, że znalazłem ten post = P). W każdym razie, jestem nowy w haskell, więc równie dobrze mogę się pomylić =).
Można użyć:
> [read [x] :: Int | x <- string]
- 1. Jak przekonwertować ciąg wartości szesnastkowych na listę liczb całkowitych?
- 2. Matlab, jak przekonwertować ciąg liczb całkowitych na wektor?
- 3. Konwertuj listę list na listę liczb całkowitych
- 4. Konwertowanie listy ciągów na listę liczb całkowitych
- 5. LINQ: Jak połączyć listę liczb całkowitych w ciąg rozdzielany przecinkami?
- 6. Jak przekonwertować ciąg liczb na tablicę liczb?
- 7. Konwertuj tablicę liczb całkowitych na ciąg w języku Python
- 8. Konwersja liczb całkowitych na ciąg w D
- 9. Jak podsumować listę liczb całkowitych strumieniami java?
- 10. Konwersja liczb całkowitych na ciąg szesnastkowy w JavaScript
- 11. Scala: dopasować i przeanalizować ciąg liczb całkowitych?
- 12. Lepszy sposób na łączenie dwóch posortowaną listę liczb całkowitych
- 13. pyton przekonwertować listę pływaka ciąg
- 14. Jak przekazać listę liczb całkowitych do działania MVC?
- 15. Jak utworzyć wyraźną listę liczb całkowitych z listy obiektów?
- 16. Podział na seq liczb całkowitych
- 17. Jak przekonwertować listę na ciąg w Emacs Lisp
- 18. konwersji listę liczb całkowitych w zakresie w Pythonie
- 19. Bezpieczne przetwarzanie liczb całkowitych w języku Ruby
- 20. Jak przekazać listę liczb całkowitych do działania MVC?
- 21. Uzyskiwanie liczb losowych z listy liczb całkowitych
- 22. Używanie java do szyfrowania liczb całkowitych
- 23. Jak przekonwertować ciąg na liczbę całkowitą w VHDL?
- 24. Jak przekonwertować ciąg na float w JavaScript?
- 25. parsować ciąg liczb całkowitych z przedziałami do listy
- 26. Jak bezpiecznie używać liczb całkowitych?
- 27. Efektywne czytanie liczb w Haskell
- 28. Jak mogę przekonwertować ciąg [] na listę <int>?
- 29. Jak przekonwertować listę obiektów na listę interfejsów?
- 30. Podział liczb całkowitych w Javie
-1, można dodać kod wypróbowaniu z? – Reddy