ruby 如何查看字符串是否以多个字符之一结尾

anauzrmj  于 12个月前  发布在  Ruby
关注(0)|答案(3)|浏览(138)

我有这样的声明:

string_tokens[-1].ends_with?(",") || string_tokens[-1].ends_with?("-") || string_tokens[-1].ends_with?("&")

字符串
我想把所有的token(",""-""&")放到一个常量中,并简化上面的问题,“字符串是否以这些字符中的任何一个结尾”,但我不确定如何做到这一点。

zyfwsgd6

zyfwsgd61#

是的

CONST = %w|, - &|.freeze
string_tokens[-1].end_with?(*CONST)

字符串
使用方法:

'test,'.end_with?(*CONST)
#=> true
'test&'.end_with?(*CONST)
#=> true
'test-'.end_with?(*CONST)
#=> true


使用*(splat运算符)将多个参数传递给String#end_with?,因为它接受多个参数。

dz6r00yl

dz6r00yl2#

你也可以使用regex:

chars = %w(, - &)
ENDS_WITH_CHAR = Regexp.new("["+chars.map{|s| Regexp.escape(s)}.join+']\z')
"abc-" =~ ENDS_WITH_CHAR
# or with Ruby 2.4
"abc-".match? ENDS_WITH_CHAR

字符串

jgovgodb

jgovgodb3#

str = 'hello-'

',-&'.include? str[-1]
  #=> true

',$&'.include? str[-1]
  #=> false

字符串

相关问题