替换字符但保留大小写
Replace characters but keeping the case
def replace_characters(name)
name.downcase.tr('àáäâãèéëẽêìíïîĩòóöôõùúüûũñç ', 'aaaaaeeeeeiiiiiooooouuuuunc-')
end
我想用普通字符替换特殊字符,但要保持大小写。
示例及其预期输出:
- íhávéspécialchárs.jpg // ihavespecialchars.jpg
- ÍHÁVÉSPÉCIALCHÁRS.JPG // IHAVESPECIALCHARS.JPG
- /IMG_4834.JPG // /IMG_4834.JPG
目前,它可以很好地替换,但总是将字符串更改为小写。例如:/IMG_4834.JPG -> /img_4834.jpg
使用I18n#transliterate
irb(main):004:0> I18n.transliterate("àáäâãèéëẽêìíïîĩòóöôõùúüûũñç")
=> "aaaaaeee?eiiiiiooooouuuuunc"
见How do I replace accented Latin characters in Ruby?
您的方法的当前实现总是返回小写字符串,因为它在调用 #tr
之前调用 #downcase
- 删除 #downcase
应该可以解决这个问题。然后,在不依赖外部库的情况下,您可以修改现有方法以覆盖大写字符:
def replace_characters(name)
name.tr('àáäâãèéëẽêìíïîĩòóöôõùúüûũñçÀÁÄÂÃÈÉËẼÊÌÍÏÎĨÒÓÖÔÕÙÚÜÛŨÑÇ ',
'aaaaaeeeeeiiiiiooooouuuuuncAAAAAEEEEEIIIIIOOOOOUUUUUNC-')
end
def replace_characters(name)
name.downcase.tr('àáäâãèéëẽêìíïîĩòóöôõùúüûũñç ', 'aaaaaeeeeeiiiiiooooouuuuunc-')
end
我想用普通字符替换特殊字符,但要保持大小写。
示例及其预期输出:
- íhávéspécialchárs.jpg // ihavespecialchars.jpg
- ÍHÁVÉSPÉCIALCHÁRS.JPG // IHAVESPECIALCHARS.JPG
- /IMG_4834.JPG // /IMG_4834.JPG
目前,它可以很好地替换,但总是将字符串更改为小写。例如:/IMG_4834.JPG -> /img_4834.jpg
使用I18n#transliterate
irb(main):004:0> I18n.transliterate("àáäâãèéëẽêìíïîĩòóöôõùúüûũñç")
=> "aaaaaeee?eiiiiiooooouuuuunc"
见How do I replace accented Latin characters in Ruby?
您的方法的当前实现总是返回小写字符串,因为它在调用 #tr
之前调用 #downcase
- 删除 #downcase
应该可以解决这个问题。然后,在不依赖外部库的情况下,您可以修改现有方法以覆盖大写字符:
def replace_characters(name)
name.tr('àáäâãèéëẽêìíïîĩòóöôõùúüûũñçÀÁÄÂÃÈÉËẼÊÌÍÏÎĨÒÓÖÔÕÙÚÜÛŨÑÇ ',
'aaaaaeeeeeiiiiiooooouuuuuncAAAAAEEEEEIIIIIOOOOOUUUUUNC-')
end