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

Kim*_*Kim 24 ruby regex ruby-on-rails

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

if stringvariable.include? "*"
 newstring = stringvariable.gsub(/[*]/, '')
end
Run Code Online (Sandbox Code Playgroud)

以上不会搜索'*'符号是否是字符串的最后一个字符.

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

谢谢你的任何建议

pju*_*ble 54

使用$锚点仅匹配行尾:

"sample*".gsub(/\*$/, '')
Run Code Online (Sandbox Code Playgroud)

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

"sample**".gsub(/\*+$/, '')
Run Code Online (Sandbox Code Playgroud)


joa*_*olk 30

您也可以使用chomp(在API Dock上查看),它默认删除尾随记录分隔符,但也可以接受参数,然后只有当它与指定字符匹配时才会删除字符串的结尾( S).

"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"
Run Code Online (Sandbox Code Playgroud)


ste*_*lag 9

String有一个end_with?方法

stringvariable.chop! if stringvariable.end_with? '*'
Run Code Online (Sandbox Code Playgroud)