我有一个字符串,我需要检查该字符串的最后一个字符是否为*,如果是,我需要删除它。
if stringvariable.include? "*"
newstring = stringvariable.gsub(/[*]/, '')
end
上面没有搜索' *' symbol是字符串的最后一个字符。
如何检查最后一个字符是否为' *'?
感谢您的任何建议
答案 0 :(得分:51)
使用$
锚只匹配行尾:
"sample*".gsub(/\*$/, '')
如果字符串末尾有可能存在多个*(并且您想要全部替换它们),请使用:
"sample**".gsub(/\*+$/, '')
答案 1 :(得分:30)
您还可以使用chomp
(see 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
干杯, 亚伦