Ruby 使用字符串#end_with?(),但忽略大小写

Ruby 使用字符串#end_with?(),但忽略大小写,ruby,regex,string,Ruby,Regex,String,如何确定字符串是否以另一个字符串结尾,而不考虑大小写 filename.end_with?(*%w(.ext1 .e2 .extension)) 仅当案例也匹配时,此示例才匹配。如何在不考虑大小写的情况下进行匹配?将文件名更改为小写,并与小写扩展名进行比较 filename.downcase.end_with?(*%w(.ext1 .e2 .extension)) 请注意,在这种特定情况下,这(可能)是可以的,但一般来说,在比较之前,仅使用downcase字符串是不够的。例如“DASS”.

如何确定字符串是否以另一个字符串结尾,而不考虑大小写

filename.end_with?(*%w(.ext1 .e2 .extension))

仅当案例也匹配时,此示例才匹配。如何在不考虑大小写的情况下进行匹配?

将文件名更改为小写,并与小写扩展名进行比较

filename.downcase.end_with?(*%w(.ext1 .e2 .extension))


请注意,在这种特定情况下,这(可能)是可以的,但一般来说,在比较之前,仅使用
downcase
字符串是不够的。例如
“DASS”.downcase.以?(“ß”)
结尾的u永远不会为真,但是两个字符串“DASS”和“daß”之间的不变大小写比较应该返回
(实际上
casecmp
返回
-1
,但这是一个bug)。@Konradolph,在Ruby中,对于
“ß”
“SS”
(或
“SS”
)哪种操作是正确的?我不知道。但Unicode要求它们在大小写不变的比较中比较为真(原因是
“ß”。upcase
被定义为
SS
——这是德国特有的特性)。Ruby实际上并没有做到这一点,但这只是因为Ruby的字符串处理中有一个bug。
'MAIN.RB'.downcase.end_with?(*%w(.ruby .rb)) # => true