2012-03-21 8 views
20

私は文字列を持っています。その文字列の最後の文字が*かどうかを調べる必要があります。ruby​​ on rails、もしそれが*印であれば最後の文字を置き換えてください

if stringvariable.include? "*" 
newstring = stringvariable.gsub(/[*]/, '') 
end 

「*」記号は、文字列の最後の文字である場合は、上記検索されません。

最後の文字が「*」であるかどうかを確認するにはどうすればよいですか?どんな提案

答えて

44

ため

おかげでのみ行の末尾と一致する$アンカーを使用します(そこの可能性がある場合、文字列の末尾に複数の*であること

"sample*".gsub(/\*$/, '') 

をし、あなたは)それらすべてを置き換えるために使用したい:

"sample**".gsub(/\*+$/, '') 
+0

おかげで、それは私が:) – Kim

+0

を探していたまさにだおかげで、ので、私を助けてたくさん – harsh4u

+0

それはあなた以上の答えを返された値を操作する必要があることに留意する必要があります。インプレース置換のために '.gsub! ' –

1

あなたは正規表現を使用するか、単に文字列をスプライスすることができ、次のいずれか

唯一のRuby 1.9.xで動作
if string_variable[-1] == '*' 
    new_string = string_variable.gsub(/[\*]/, '') # note the escaped * 
end 

...

そうしないと、正規表現を使用する必要があります

if string_variable =~ /\*$/ 
    new_string = string_variable.gsub(/[\*]/, '') # note the escaped * 
end 

をしかし、あなたもifを必要としません。

new_string = string_variable.gsub(/\*$/, '') 
1

次の操作を行うと、問題のある文字があれば削除されます。あなたは、文字の複数の出現を削除したい場合は、あなたが行うことができます

your_string.sub(/\*$/, '') 

:もちろん

your_string.sub(/\*+$/, '') 

を、あなたはその場で文字列を変更したい場合はそれ以外の場合は何もしません、サブを使用!代わりに

サブ乾杯の、 アーロン

8

文字列は、また、デフォルトで末尾のレコード区切り文字(複数可)を除去する、chompsee it on API Dock)を使用することができますend_with?方法

stringvariable.chop! if stringvariable.end_with? '*' 
25

を持っていますが、引数を取ることもできますし、指定された文字と一致する場合にのみ文字列の終わりを削除します。

"hello".chomp   #=> "hello" 
"hello\n".chomp   #=> "hello" 
"hello\r\n".chomp  #=> "hello" 
"hello\n\r".chomp  #=> "hello\n" 
"hello\r".chomp   #=> "hello" 
"hello \n there".chomp #=> "hello \n there" 
"hello".chomp("llo")  #=> "he" 
"hello*".chomp("*")  #=> "hello" 
+0

を使用すると、本当に他の回答よりも助けになりました – vishB

関連する問題