पहले एन शब्दों में स्ट्रिंग को छोटा करने का सबसे अच्छा तरीका क्या है?पहले एन शब्दों में स्ट्रिंग स्ट्रिंग
उत्तर
n = 3
str = "your long long input string or whatever"
str.split[0...n].join(' ')
=> "your long long"
str.split[0...n] # note that there are three dots, which excludes n
=> ["your", "long", "long"]
'str.split (/ \ s + /, n + 1) [0 ... n] .join ('') 'प्रदर्शन में सुधार करेगा। – sawa
इसे पहले 4 शब्द मिलेगा, न कि 3. –
@ZackXu सुनिश्चित करें कि आप '...' रेंज का उपयोग करें, न कि '..' एक। तीन बिंदुओं में एनएच मूल्य शामिल नहीं है। –
आप इस तरह यह कर सकता है:
s = "what's the best way to truncate a ruby string to the first n words?"
n = 6
trunc = s[/(\S+\s+){#{n}}/].strip
यदि आप एक प्रतिलिपि बनाने आपत्ति नहीं है।
तुम भी Sawa's सुधार लागू हो सकते हैं (काश मैं अभी भी एक गणितज्ञ थे, कि एक प्रमेय के लिए एक महान नाम होगा) खाली स्थान के पता लगाने का समायोजन करके:
trunc = s[/(\s*\S+){#{n}}/]
आप एक n
से निपटने के लिए है, तो यह है कि s
तो आप इस प्रकार का उपयोग कर सकते में शब्दों की संख्या से अधिक है:
s[/(\S+(\s+)?){,#{n}}/].strip
एक सुधार: 'trunc = s [/ (\ s * \ S +) {# {n}} /]'। आपको 'स्ट्रिप' की आवश्यकता नहीं है। – sawa
@ सावा: आप इसे (और 'स्प्लिट' दृष्टिकोण का अपना संस्करण) के रूप में नीचे दिए गए उत्तरों के उत्तर, सुधार और स्पष्टीकरण के रूप में डाल सकते हैं। –
@sawa, और स्पीडअप दिखाते हुए एक बेंचमार्क जोड़ें। –
आप n किसी भी संख्या होने के साथ str.split.first(n).join(' ')
उपयोग कर सकते हैं।
मूल स्ट्रिंग में संगत सफेद रिक्त स्थान लौटाई गई स्ट्रिंग में एक सफेद स्थान के साथ प्रतिस्थापित किए जाते हैं।
उदाहरण के लिए, आईआरबी में इस प्रयास करें:
>> a='apple orange pear banana pineaple grapes'
=> "apple orange pear banana pineaple grapes"
>> b=a.split.first(2).join(' ')
=> "apple orange"
इस वाक्य रचना बहुत स्पष्ट है (के रूप में यह सूचकांक द्वारा नियमित अभिव्यक्ति, सरणी टुकड़ा प्रयोग नहीं करते)। यदि आप रूबी में प्रोग्राम करते हैं, तो आप जानते हैं कि स्पष्टता एक महत्वपूर्ण स्टाइलिस्ट पसंद है।
join
के लिए एक आशुलिपि *
है तो इस वाक्य रचना str.split.first(n) * ' '
बराबर है और कम (अधिक मुहावरेदार, uninitiated के लिए कम स्पष्ट) है।
तुम भी take
first
के बजाय का उपयोग कर सकते तो निम्न एक ही बात
a.split.take(2) * ' '
अगर यह रेल 4.2 (जो truncate_words है)
string_given.squish.truncate_words(number_given, omission: "")
- 1. शब्दों में स्प्लिट स्ट्रिंग
- 2. एन [स्ट्रिंग]
- 3. एन स्ट्रिंग
- 4. स्ट्रिंग में शब्दों को उलटना
- 5. एन अक्षरों की स्ट्रिंग
- 6. स्ट्रिंग को शब्दों में कैसे विभाजित करें। पूर्व: "स्ट्रिंगंटोर्ड्स" -> "शब्दों में स्ट्रिंग"?
- 7. स्ट्रिंग में शब्दों को कैसे उलटें?
- 8. यादृच्छिक स्ट्रिंग में अंग्रेजी शब्दों की गणना
- 9. वैकल्पिक शब्दों में स्प्लिट स्ट्रिंग (स्कैला)
- 10. यूनिकोड स्ट्रिंग के पहले एन अक्षरों को लौटाना
- 11. आउटपुट पहले स्ट्रिंग में पहले 100 वर्ण
- 12. Regex पहले वैकल्पिक स्ट्रिंग
- 13. xslt:-स्ट्रिंग-से पहले
- 14. स्ट्रिंग के सामने से एन अक्षर को
- 15. सॉर्ट स्ट्रिंग्स, पहले अक्षर पहले, फिर शब्दों के अंदर अक्षर
- 16. स्ट्रिंग में एरलांग शब्दों को कनवर्ट करें, या एरोडैंग बाइनरी
- 17. स्ट्रिंग सरणी में स्ट्रिंग स्ट्रिंग
- 18. स्ट्रिंग
- 19. स्ट्रिंग
- 20. स्ट्रिंग में शब्दों की गणना करना - सी प्रोग्रामिंग
- 21. मैं स्ट्रिंग में शब्दों की संख्या कैसे गिन सकता हूं?
- 22. शब्दों की सूची में एक स्ट्रिंग को परिवर्तित करना?
- 23. शब्दों और विराम चिह्न में एक स्ट्रिंग को विभाजित करना
- 24. अलग-अलग शब्दों में विभाजित करें स्ट्रिंग जावा
- 25. XmlSerializer, बेस 64 सांकेतिक शब्दों में बदलना एक स्ट्रिंग सदस्य
- 26. स्ट्रिंग
- 27. स्वरूप स्ट्रिंग, पहले शून्य पूर्णांक
- 28. स्ट्रिंग में पहले चार चेक करें
- 29. स्प्लिट पहले से जावा में स्ट्रिंग पाया
- 30. स्ट्रिंग में पहले अक्षर को अपरकेस
आप कर रहे हैं से है यह निम्न किया जा सकता है क्या करना होगा रूबी, या रेल पर रूबी का उपयोग कर? –