2013-10-15 25 views
15

Jak przekonwertować ciąg cyfr na liczbę całkowitą? chcę „365”, aby zostać przekształcone do 365.Konwertowanie ciągu na liczbę całkowitą na schemacie

Co próbowałem, String> listy i charakte-> całkowitą, ale ta zwraca wartość ASCII tej liczby całkowitej, jak mogę dostać tę całkowitą?

Proszę o pomoc.

+2

'(String> numer "365")' –

+0

dzięki @larsmans :) –

+0

Możliwy duplikat [ tutaj] (http://stackoverflow.com/questions/8956789/read-number-in-or-something-can-turn-string-eg-1-to-integer-1-in-racket/8956947#8956947) – Inaimathi

Odpowiedz

19

Spróbuj: string->number

> (string->number "1234") 
1234 
+0

aha, nie próbowałem tego. I've going by jakąś długą drogę, anyways Dzięki –

+0

Powiązane: http://stackoverflow.com/questions/23027030/how-can-i-convert-a-string-into-exact-number-in-scheme-lisp –

1

Alternatywnym rozwiązaniem do analizowania liczby całkowite z ciągów znaków:

#lang typed/racket 

(: numerical-char->integer (-> Char 
           Integer)) 
(define (numerical-char->integer char) 
    (let ([num (- (char->integer char) 48)]) ; 48 = (char->integer #\0) 
    (if 
    (or (< num 0) (> num 9)) 
    (raise 'non-numerical-char #t) 
    num))) 

(: string->integer (-> String 
         Integer)) 
(define (string->integer str) 
    (let ([char-list (string->list str)]) 
    (if (null? char-list) 
     (raise 'empty-string #t) 
     (foldl 
     (λ([x : Integer] [y : Integer]) 
      (+ (* y 10) x)) 
     0 
     (map numerical-char->integer char-list))))) 
Powiązane problemy