2013-05-14 17 views
1

如何在出現某個符號(例如#號)後截斷文本字符串?舉例來說,我想改變這一點:在出現某個符號後切斷文本 - rails

1234海洋大道#PH 2

到:

1234海洋大道

我發現,在地址公寓號這始終是由英鎊符號表示可能會使地理編碼器混淆,因此我想要在地址解析器gem在self.address的英鎊符號後面顯示的所有文本在以下情況下使用哪個地址:

正確ty.rb

class Property < ActiveRecord::Base 

geocoded_by :full_address 

def full_address 
"#{self.address}, #{self.city}, #{self.state} #{self.zip}" 
end 

(不要在上面的代碼中的井號困惑,我不是說他們,我的意思是出現在文本字符串,它是self.address

+0

要麼使用正則表達式,要麼只是在「混淆」字符的索引之後切分。 – 2013-05-14 17:25:59

回答

3
str = "1234 Ocean Drive #PH 2" 
str.split('#')[0] 
str.slice(0..(s.index('#')-1)) 
str.slice(/.*#/).chop() 
str[/[^#]+/] 
英鎊跡象
+1

看起來像第一個是最快的https://gist.github.com/stim371/5580318,但是您可能還想在結果字符串上運行'chomp'來刪除尾部空格。 – jstim 2013-05-14 22:55:52

+0

非常好,非常感謝,我在末尾加了'.rstrip'來擺脫這樣的尾隨空白:'str.split('#')[0] .rstrip' – railsy 2013-05-15 12:59:19

0

下面是你的榜樣串的基本工作正則表達式:(^.*)#.*$

像這樣的事情會讓你上半年:

address = 1234 Ocean Drive #PH 2 
truncatedaddress = address.match(/(^.*)#.*/i).captures 

把它放在你的self.address方法中,並記住要處理切斷任何尾隨空格。