我有一个ActiveRecord模型,Foo有一个name字段.我希望用户能够按名称搜索,但我希望搜索忽略大小写和任何重音.因此,我还存储了一个canonical_name要搜索的字段:
class Foo
validates_presence_of :name
before_validate :set_canonical_name
private
def set_canonical_name
self.canonical_name ||= canonicalize(self.name) if self.name
end
def canonicalize(x)
x.downcase. # something here
end
end
Run Code Online (Sandbox Code Playgroud)
我需要填写"这里的东西"来替换重音字符.还有什么比这更好的了
x.downcase.gsub(/[àáâãäå]/,'a').gsub(/æ/,'ae').gsub(/ç/, 'c').gsub(/[èéêë]/,'e')....
Run Code Online (Sandbox Code Playgroud)
而且,就此而言,由于我不在Ruby 1.9上,我不能将这些Unicode文字放在我的代码中.实际的正则表达式看起来会更加丑陋.
我需要像"César"这样的词匹配这样的正则表达式/^cesar/i.
是否有选项/i配置正则表达式,以便它忽略急性重音?或者唯一的解决方案是使用这样的正则表达式/^césar/i.
javascript regex diacritics special-characters non-ascii-characters
javascript ×2
activerecord ×1
ascii ×1
converter ×1
diacritics ×1
regex ×1
ruby ×1
slug ×1
unicode ×1
utf-8 ×1