क्या रूबी के पास एक string.startswith ("abc") विधि में बनाया गया है?


200

क्या रूबी के पास एक ऐसी some_string.starts_with("abc")विधि है जिसे बनाया गया है?



7
संयोग से, आप रूबी के बारे में पूछ रहे हैं, या रेल के बारे में?
— एंड्रयू ग्रिम

जवाबों:


339

इसे कहा जाता है String#start_with?, नहीं String#startswith: रूबी में, बूलियन-ईश विधियों के नाम के साथ समाप्त होता है ?और विधि नामों में शब्दों को ए के साथ अलग किया जाता है _। यकीन नहीं है कि कहाँ sगया, व्यक्तिगत रूप से, मैं String#starts_with?वास्तविक पर पसंद करूँगाString#start_with?


9
मैत्ज़ ने कहा है कि वह एस के बिना पसंद करते हैं क्योंकि यह दूसरे व्यक्ति की तरह दिखता है या तीसरे व्यक्ति का बहुवचन।
— एंड्रयू ग्रिम

5
स्ट्रिंग # start_with? रूबी 1.8.7 और 1.9.0 में पेश किया गया था - पुराने संस्करणों के लिए आप अन्य उत्तरों में उल्लिखित रेगेक्स या इंडेक्स संस्करणों में से एक का उपयोग करना चाह सकते हैं।
— हामिश डाउनर

3
रेल में, आप स्ट्रिंग # start_with का उपयोग कर सकते हैं?
— अबडो

3
@anthropomorphic github.com/rails/rails/blob/… ; यह स्ट्रिंग के लिए एक उपनाम है # start_with?
— अब्दो

10
@AndrewGrimm एकमात्र समस्या यह है कि "एक तार" तीसरे व्यक्ति एकवचन है! (एर्गो, 'एस' को नहीं छोड़ना चाहिए था)।
— user456584

41

आपका प्रश्न शीर्षक और आपका प्रश्न निकाय अलग-अलग हैं। रूबी के पास एक start_with नहीं है? तरीका। रेल , जो रूबी ढांचा है , हालांकि, sepp2k राज्यों के रूप में करता है। इसके लिए प्रलेखन के लिंक के लिए उनके जवाब पर उनकी टिप्पणी देखें।

आप हमेशा एक नियमित अभिव्यक्ति का उपयोग कर सकते हैं:

if SomeString.match(/^abc/) 
   # SomeString starts with abc

^ नियमित अभिव्यक्ति में "स्ट्रिंग की शुरुआत" का मतलब है


मैंने "रूबी में एक start_with विधि नहीं है। इसका मतलब है?"
— sepp2k

@ sepp2k, लेकिन यह है ?सवाल शीर्षक में)
— Nakilon

स्ट्रिंग शुरू हो गई है? चूंकि रूबी 1.9 ( eigenclass.org/hiki/Changes+in+Ruby+1.9#l124 )
— स्टीवंसगैग

4
@steenslag - रूबी 1.8.7 में भी start_with है? - प्रलेखन और 1.8.7 जारी नोट
— हमीश डाउनर

स्ट्रिंग शाब्दिक से रीगेक्स का निर्माण करते समय सावधान - किसी भी विशेष आकर्षण से बचने के लिए याद रखें। वहाँ के लिए एक समारोह है कि तार स्ट्रिंग शाब्दिक अप्रत्याशित हो सकता है
— Radu Simionescu

17

यदि यह एक गैर-रेल परियोजना के लिए है, तो मैं उपयोग करूंगा String#index:

"foobar".index("foo") == 0  # => true

9
यह, हालांकि, अधिक प्रदर्शन-गहन होगा, इसमें एक start_with?विधि बस पुष्टि कर सकती है कि स्ट्रिंग की शुरुआत दी गई स्ट्रिंग से मेल खाती है - इस प्रकार अधिकांश n वर्णों पर प्रसंस्करण जहां n दी गई स्ट्रिंग की लंबाई है - जबकि indexखोज करनी होगी संपूर्ण आधार स्ट्रिंग। विफलता के मामले में, starts_with?एक एक्सेस (प्रति स्ट्रिंग) और तुलना indexकरेंगे , जबकि बेस स्ट्रिंग की पूरी लंबाई तक चलेगा।
— ओल्डपेकुलियर

5

आप उपयोग कर सकते हैं String =~ Regex। यह स्ट्रिंग में पूर्ण रेगेक्स मैच की स्थिति देता है।

irb> ("abc" =~ %r"abc") == 0
=> true
irb> ("aabc" =~ %r"abc") == 0
=> false

जब भी संभव हो //इसके बजाय उपयोग करें %r।
— साइओस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.