Ocaml

2011-12-04 15 views
11

में सबस्ट्रिंग चेक OCaml में एक प्रभावी सबस्ट्रिंग चेक कोडिंग में कोई मेरी मदद कर सकता है? दो तारों को देखते हुए, जांच करें कि पहले व्यक्ति में दूसरा क्या है?Ocaml

Str मॉड्यूल का उपयोग करके, क्या हम यह कर सकते हैं?

उत्तर

9

इस तरह कुछ काम कर सकते हैं:

let contains s1 s2 = 
    let re = Str.regexp_string s2 
    in 
     try ignore (Str.search_forward re s1 0); true 
     with Not_found -> false 

यहाँ समारोह के कुछ परीक्षण कर रहे हैं:

# contains "abcde" "bc";; 
- : bool = true 
# contains "abcde" "bd";; 
- : bool = false 
# contains "abcde" "b.";; 
- : bool = false 
# contains "ab.de" "b.";; 
- : bool = true 
+0

इस अभ्यस्त काम करता है, तो 's2' विशेष regex चरित्र है इसमें अनुक्रम, जैसे '.'। आपको पहले 'Str.quote s2' कॉल करना होगा। – nlucaroni

+1

मुझे नहीं लगता कि यह सच है। 'Regexp_string' का उद्देश्य बिल्कुल एक विशेष स्ट्रिंग से मेल खाना है। यह संभवतः आंतरिक रूप से उद्धरण करता है। मेरे परीक्षण बताते हैं कि यह कोड ठीक काम करता है। –

+1

में एक बुरा नाम है, क्योंकि इसका विस्तार पुस्तकालयों में पहले से ही एक और अर्थ है। – ygrek

2
+1

मैं त्रुटि हो रही है। 'स्ट्रिंग.एक्सिस्ट्स "एबीसी" "ए" ;; , त्रुटि: अनबाउंड मान String.exists ' तो इस नए फ़ंक्शन का उपयोग कैसे कर सकता है? – priyanka

+0

#require "extlib" ;; खुला ExtLib ;; – ygrek

+1

इसकी अभी भी :( – priyanka

0
let contains_substring search target = 
    String.substr_index search target <> None 
+0

कोर, सही की आवश्यकता है? – unhammer

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