2013-11-01 6 views
6

चलो कहते हैं कि मैं दो तार करते हैं:चेक

  1. "यह एक टेस्ट है"

कैसे कर "यह टेस्ट मैचों की एक" मैं स्ट्रिंग के अंत में "टेस्ट" से मेल खाता हूं और केवल परिणाम के रूप में दूसरा प्राप्त करता हूं, न कि पहली स्ट्रिंग। मैं include? का उपयोग कर रहा हूं लेकिन यह सभी घटनाओं से मेल खाएगा न कि केवल स्ट्रिंग के अंत में सबस्ट्रिंग होता है।

"This-Test has a " =~ /Test$/ 
#=> nil 
"This has a-Test" =~ /Test$/ 
#=> 11 

उत्तर

13

आप यह कर सकते हैं बहुत बस, end_with? का उपयोग कर उदाहरण के लिए:

3

आप परीक्षण करने के लिए regex /Test$/ उपयोग कर सकते हैं

"Test something Test".end_with? 'Test' 

या, आप एक regex कि स्ट्रिंग के अंत से मेल खाता है का उपयोग कर सकते हैं:

/Test$/ === "Test something Test" 
6
"This-Test has a ".end_with?("Test") # => false 
"This has a-Test".end_with?("Test") # => true 
5

ओह, संभावनाओं कई हैं ...

मान लीजिए कि हम दो तार करते हैं, a = "This-Test has a" और b = "This has a-Test

चूंकि आप किसी स्ट्रिंग कि "Test" में वास्तव में समाप्त होता है मिलान करना चाहते हैं, एक अच्छा रेगुलर एक्सप्रेशन से /Test$/ जो "राजधानी टी, e द्वारा पीछा किया, तो s, तो t, तो लाइन ($) के अंत" का अर्थ होगा।

a =~ /Test$/ # => nil (because the string does not match) 
b =~ /Test$/ # => 11 (as in one match, starting at character 11) 

तुम भी इस्तेमाल कर सकते हैं String#match:

रूबी =~ ऑपरेटर जो एक स्ट्रिंग के खिलाफ एक रेगुलर एक्सप्रेशन से मिलान किया जाता है (या स्ट्रिंग जैसी वस्तु) है

a.match(/Test$/) # => nil (because the string does not match) 
b.match(/Test$/) # => a MatchData object (indicating at least one hit) 

या आप String#scan इस्तेमाल कर सकते हैं :

a.scan(/Test$/) # => [] (because there are no matches) 
b.scan(/Test$/) # => ['Test'] (which is the matching part of the string) 

या आप बस 01 का उपयोग कर सकते हैं:

/Test$/ === a # => false (because there are no matches) 
/Test$/ === b # => true (because there was a match) 

या आप String#end_with? उपयोग कर सकते हैं:

a.end_with?('Test') # => false 
b.end_with?('Test') # => true 

... या कई अन्य तरीकों में से एक। अपना चयन ले लो।

+0

अपने downvote कि था? :) –

3

आप एक सीमा का उपयोग कर सकते हैं:

"This-Test has a "[/Test$/] # => nil 
"This has a-Test"[/Test$/] # => "Test" 

आप की जरूरत है:

"Your string " =~ /Test$/ 
3

स्ट्रिंग के [] यह अच्छा और आसान और साफ करता है:

"Your string"[-4..-1] == "Test" 

आप एक regex का उपयोग कर सकते हैं केस-असंवेदनशील:

"This-Test has a "[/test$/i] # => nil 
"This has a-Test"[/test$/i] # => "Test" 

यदि आप चाहते हैं सही/गलत:

str = "This-Test has a " 
!!str[/Test$/] # => false 

str = "This has a-Test" 
!!str[/Test$/] # => true 
संबंधित मुद्दे