提取的最後n個字符從字符串中獲取最後一個字符n
,我認爲你可以使用從紅寶石串
ending = string[-n..-1]
但如果字符串小於n
字母長,你會得到nil
。
什麼解決方法可用?
背景:這些字符串是純ASCII,我有權訪問ruby 1.9.1,並且我使用普通的舊的Ruby對象(沒有web框架)。
提取的最後n個字符從字符串中獲取最後一個字符n
,我認爲你可以使用從紅寶石串
ending = string[-n..-1]
但如果字符串小於n
字母長,你會得到nil
。
什麼解決方法可用?
背景:這些字符串是純ASCII,我有權訪問ruby 1.9.1,並且我使用普通的舊的Ruby對象(沒有web框架)。
在這裏你有一個襯墊,你可以把一個大於字符串的大小:
"123".split(//).last(5).to_s
爲Ruby 1.9+
"123".split(//).last(5).join("").to_s
爲Ruby 2.0+,加入回報串
"123".split(//).last(5).join
ending = string.reverse[0...n].reverse
這是我此頁,滿足了能夠提供一個結束字符長度的要求上看到的最好的方法超過了整個字符串的長度。 –
例如,如果您打算採用「abcde」,「ab」和「a」等一組刺的最後3個字符。這種技術將導致「cde」,「ab」和「a」使用相同的代碼。 >>>「cde」'「ab」.reverse [0,3] .reverse' >>>「ab」'「a」.reverse [0, 3] .reverse' >>>「a」 –
你嘗試過一個正則表達式嗎?
string.match(/(.{0,#{n}}$)/)
ending=$1
正則表達式在字符串的結尾捕捉儘可能多的字符就可以了,但不超過N多。並將其存儲在$ 1中。
從字符串中獲得最後的n個字符,你可以這樣做
a [-n,n]如果a是數組。
下面是一個例子,如果你想要一個。
紅寶石1.9.2-P180:006>一個= 「911234567890」
=> 「911234567890」
紅寶石1.9.2-P180:009>一個[-5,5]
=> 「67890」
紅寶石1.9.2-P180:010>一個[-7,7-]
=> 「4567890」
如果這個數字太大,返回'nil',這就是這個問題特別想要避免的。 –
很好的答案。清潔。 – Volte
展示次數EmFi的答案。
string[/.{,#{n}}\z/m]
在直紅寶石(無Rails的),你可以做
string.chars.last(n).join
例如:
2.4.1 :009 > a = 'abcdefghij'
=> "abcdefghij"
2.4.1 :010 > a.chars.last(5).join
=> "fghij"
2.4.1 :011 > a.chars.last(100).join
=> "abcdefghij"
如果你使用Ruby on Rails,你可以調用方法first
和last
上的一個字符串對象。這些方法是首選,因爲它們簡潔直觀。
例如:
[1] pry(main)> a = 'abcdefg'
=> "abcdefg"
[2] pry(main)> a.first(3)
=> "abc"
[3] pry(main)> a.last(4)
=> "defg"
最好的一個。謝謝。 –
Ruby不暗示Rails。 – Volte
如果您使用的是最新版本的Ruby,那麼您可以使用「chars」而不是split。 –
這不適用於1.9。其他答案似乎。 – rogerdpack
我用「12345678910」.split(//)。last(7).join.to_s –