Ответ 1
Используйте привязку $
для соответствия только концу строки:
"sample*".gsub(/\*$/, '')
Если существует возможность наличия более одного * в конце строки (и вы хотите заменить их все), используйте:
"sample**".gsub(/\*+$/, '')
У меня есть строка, и мне нужно проверить, является ли последний символ этой строки *, и если это так, мне нужно удалить ее.
if stringvariable.include? "*"
newstring = stringvariable.gsub(/[*]/, '')
end
Вышеупомянутое не выполняет поиск, если символ '*' является LAST-символом строки.
Как проверить, является ли последний символ "*"?
Спасибо за любое предложение
Используйте привязку $
для соответствия только концу строки:
"sample*".gsub(/\*$/, '')
Если существует возможность наличия более одного * в конце строки (и вы хотите заменить их все), используйте:
"sample**".gsub(/\*+$/, '')
Вы также можете использовать 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"
Строка имеет метод end_with?
stringvariable.chop! if stringvariable.end_with? '*'
Вы можете использовать регулярное выражение или просто соединить строку:
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(/\*$/, '')
Вы можете сделать следующее, которое удалит оскорбительный символ, если он есть. В противном случае он ничего не сделает:
your_string.sub(/\*$/, '')
Если вы хотите удалить более одного символа, вы можете сделать:
your_string.sub(/\*+$/, '')
Конечно, если вы хотите изменить строку на месте, используйте sub! вместо sub
Cheers, Аарон