2011-10-07 16 views
10

मैं बस सोच रहा हूं कि स्ट्रिंग स्प्लिट फ़ंक्शन है या नहीं? कुछ ऐसा:स्ट्रिंग स्प्लिट फ़ंक्शन

> (string-split "19 2.14 + 4.5 2 4.3/- *") 
'("19" "2.14" "+" "4.5" "2" "4.3" "/" "-" "*") 

मुझे यह नहीं मिला है और मैंने अपना खुद का निर्माण किया है। मैं समय-समय पर योजना उपयोग करती हैं इसलिए मैं आभारी अगर आप इसे ठीक करने और बेहतर समाधान का सुझाव दिया जाएगा:

#lang racket 

(define expression "19 2.14 + 4.5 2 4.3/- *") 

(define (string-split str) 

    (define (char->string c) 
    (make-string 1 c)) 

    (define (string-first-char str) 
    (string-ref str 0)) 

    (define (string-first str) 
    (char->string (string-ref str 0))) 

    (define (string-rest str) 
    (substring str 1 (string-length str))) 

    (define (string-split-helper str chunk lst) 
    (cond 
    [(string=? str "") (reverse (cons chunk lst))] 
    [else 
    (cond 
     [(char=? (string-first-char str) #\space) (string-split-helper (string-rest str) "" (cons chunk lst))] 
     [else 
     (string-split-helper (string-rest str) (string-append chunk (string-first str)) lst)] 
     ) 
    ] 
    ) 
) 

    (string-split-helper str "" empty) 
) 

(string-split expression) 
+3

आप पिछले अभिव्यक्ति के रूप में एक ही लाइन पर अपने समापन कोष्ठक रखना चाहिए का हिस्सा है। यह सी नहीं है :) – erjiang

+2

नहीं, आपको जो कुछ भी पसंद करना चाहिए। – rightfold

उत्तर

13

हे! यह बहुत काम है। अगर मैं आपकी समस्या को सही ढंग से समझ, मैं इस के लिए regexp-विभाजन का प्रयोग करेंगे:

 
#lang racket 
(regexp-split #px" " "bc thtn odnth") 

=>

 
Language: racket; memory limit: 256 MB. 
'("bc" "thtn" "odnth") 
+3

आमतौर पर '#px" + "' या '#px" जैसे कुछ [[: space:]] "' अधिक उपयुक्त है। (यदि वह इरादा था।) –

6

, मैं irregex अंडे का उपयोग कर चिकन योजना में ऐसा किया बस अन्य Schemers के लिए एक संदर्भ के रूप :

(use irregex) 

(define split-regex 
    (irregex '(+ whitespace))) 

(define (split-line line) 
    (irregex-split split-regex line)) 

(split-line "19 2.14 + 4.5 2 4.3/- *") => 
("19" "2.14" "+" "4.5" "2" "4.3" "/" "-" "*") 
+1

यदि आप हर बार उस परिभाषा की प्रतिलिपि बनाना नहीं चाहते हैं, तो '(स्ट्रिंग-स्प्लिट)' भी 'कॉप्स' अंडे का हिस्सा है, जिसमें कुछ अन्य अच्छी स्ट्रिंग चीजें हैं। दुर्भाग्यवश यह अपने दस्तावेज़ पृष्ठ पर दस्तावेज नहीं है। – user1610406

संबंधित मुद्दे