2013-10-15 10 views
15

Wie kann ich eine Zeichenfolge von Ziffern in eine Ganzzahl konvertieren? I "365" werden wollen 365. umgewandeltKonvertieren von String in Ganzzahl in Schema

Was ich versucht habe, Saiten-> Liste Char- dann> integer, aber dies gibt den ASCII-Wert dieser ganze Zahl ist, wie kann ich diese ganze Zahl erhalten?

Bitte helfen.

+2

'(Saiten-> Nummer "365")' –

+0

Dank @larsmans :) –

+0

Mögliche duplizieren [ hier] (http://stackoverflow.com/questions/8956789/read-number-in-oder-something-can-turn-string-eg-1-to-integer-1-in-racket/8956947#8956947) – Inaimathi

Antwort

19

Versuchen: string->number

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

Ahha, das habe ich nicht versucht. Ich ging irgendwie weit weg, danke Thanks –

+0

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

1

Eine alternative Lösung für ganze Zahlen von Strings parsen:

#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))))) 
Verwandte Themen