पाठ का विकल्प कैसे प्राप्त करें?


172

मेरे पास लंबाई ~ 700 के साथ पाठ है। मुझे इसके पहले पात्रों में से केवल ~ 30 कैसे मिलते हैं?

जवाबों:



207

उपयोग String#slice, के रूप में भी उपनाम दिया गया []

a = "hello there"
a[1]                   #=> "e"
a[1,3]                 #=> "ell"
a[1..3]                #=> "ell"
a[6..-1]               #=> "there"
a[-3,2]                #=> "er"
a[-4..-2]              #=> "her"
a[12..-1]              #=> nil
a[-2..-4]              #=> ""
a[/[aeiou](.)\1/]      #=> "ell"
a[/[aeiou](.)\1/, 0]   #=> "ell"
a[/[aeiou](.)\1/, 1]   #=> "l"
a[/[aeiou](.)\1/, 2]   #=> nil
a["lo"]                #=> "lo"
a["bye"]               #=> nil

31
स्पष्ट -1होने के लिए, स्ट्रिंग के अंत तक पहुंचने के लिए उपयोग किया जाता है, इसलिए a[1..-1] #=> "ello there"
यहोशू पिंटर

5
यह कुछ के लिए स्पष्ट हो सकता है, लेकिन नकारात्मक पदों के लिए अल्पविराम का उपयोग करना ठीक नहीं हैa[-4,-2] :। केवल मान्य नोटेशन दो बिंदु हैं a[-4..-2]:। इसे कठिन तरीका सीखा।
कैवेलपोलो

24

चूंकि आपने इसे रेल टैग किया था, आप ट्रंकट का उपयोग कर सकते हैं:

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-truncate

उदाहरण:

 truncate(@text, :length => 17)

अंश भी जानकर अच्छा लगा, यह आपको पाठ का एक अंश प्रदर्शित करने देता है जैसे:

 excerpt('This is an example', 'an', :radius => 5)
 # => ...s is an exam...

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-excerpt


9
रूबी रेल नहीं है।
जोआ mdám

@ Joó Mardám टैग एंड्रयू मार्शल द्वारा बदल दिया गया था
माफी

क्या बदलाव का कोई औचित्य था? यदि ओपी रेल में काम करता है और रेल में समाधान के लिए कहता है, तो सवाल रेल के साथ टैग किया जाना चाहिए। और तब आपका जवाब समझ में आता है।
जोआ mdám

@ Joó Rdám प्रश्न को ओपी द्वारा रेल को टैग किया गया था, इस बिंदु पर
apneadiving

मैं इसे प्राप्त करता हूं, मैं नहीं देखता कि टैग को क्यों हटाया गया। मैंने प्रश्न संपादित किया है और स्पष्ट किया है कि यह रेल के बारे में है। यह समीक्षा लंबित है।
जोडो Jodám

12

यदि आपको रेल में इसकी आवश्यकता है तो आप पहले ( स्रोत कोड ) का उपयोग कर सकते हैं

'1234567890'.first(5) # => "12345"

वहाँ भी पिछले ( स्रोत कोड )

'1234567890'.last(2) # => "90"

वैकल्पिक रूप से / ( स्रोत कोड ) से जांचें :

"hello".from(1).to(-2) # => "ell"

NoMethodError: undefined method `first' for "abcde":String, यह एक रेल कार्यान्वयन है?
Tiw

हाँ यही है। लेकिन आप स्रोत कोड फॉर्म लिंक भी कॉपी कर सकते हैं जो मैंने पोस्ट किया था
अरे करजौव

0

यदि आप एक स्ट्रिंग चाहते हैं, तो अन्य उत्तर ठीक हैं, लेकिन अगर आप जो खोज रहे हैं वह पहले कुछ अक्षर हैं, तो आप उन्हें सूची के रूप में एक्सेस कर सकते हैं:

your_text.chars.take(30)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.