Подтвердить что ты не робот

Рубин на рельсах, замените последний символ, если это знак *

У меня есть строка, и мне нужно проверить, является ли последний символ этой строки *, и если это так, мне нужно удалить ее.

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

Вышеупомянутое не выполняет поиск, если символ '*' является LAST-символом строки.

Как проверить, является ли последний символ "*"?

Спасибо за любое предложение

4b9b3361

Ответ 1

Используйте привязку $ для соответствия только концу строки:

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

Если существует возможность наличия более одного * в конце строки (и вы хотите заменить их все), используйте:

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

Ответ 2

Вы также можете использовать chomp (см. его в Доке API), который по умолчанию удаляет символы разделителя записей, но также может принимать аргумент, а затем он удаляет конец строки только в том случае, если он соответствует указанному символу.

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

Ответ 3

Строка имеет метод end_with?

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

Ответ 4

Вы можете использовать регулярное выражение или просто соединить строку:

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(/\*$/, '')

Ответ 5

Вы можете сделать следующее, которое удалит оскорбительный символ, если он есть. В противном случае он ничего не сделает:

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

Если вы хотите удалить более одного символа, вы можете сделать:

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

Конечно, если вы хотите изменить строку на месте, используйте sub! вместо sub

Cheers, Аарон