ruby on rails,如果它是*符号,则替换最后一个字符

时间:2012-03-21 17:15:12

标签: ruby-on-rails ruby regex

我有一个字符串,我需要检查该字符串的最后一个字符是否为*,如果是,我需要删除它。

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

上面没有搜索' *' symbol是字符串的最后一个字符。

如何检查最后一个字符是否为' *'?

感谢您的任何建议

5 个答案:

答案 0 :(得分:51)

使用$锚只匹配行尾:

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

如果字符串末尾有可能存在多个*(并且您想要全部替换它们),请使用:

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

答案 1 :(得分:30)

您还可以使用chompsee it on API Dock),默认情况下删除尾随记录分隔符,但也可以接受参数,然后删除字符串的结尾只有它与指定的字符匹配。

"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"

答案 2 :(得分:8)

String有一个end_with?方法

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

答案 3 :(得分:1)

您可以使用正则表达式,也可以只拼接字符串:

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

仅适用于Ruby 1.9.x ...

否则你需要使用正则表达式:

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

但你甚至不需要if

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

答案 4 :(得分:1)

您可以执行以下操作,以删除有问题的字符(如果存在)。否则它什么都不做:

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

如果要删除多个字符,可以执行以下操作:

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

当然,如果你想要就地修改字符串,请使用sub!而不是sub

干杯, 亚伦