ruby - 替换字符但保留大小写

标签 ruby translate

def replace_characters(name)
    name.downcase.tr('àáäâãèéëẽêìíïîĩòóöôõùúüûũñç ', 'aaaaaeeeeeiiiiiooooouuuuunc-')
end

我想用普通字符替换特殊字符,但要保持大小写。

示例及其预期输出:

  • íhávéspécialchars.jpg//ihavespecialchars.jpg
  • ÍHÁVÉSPÉCIALCHÁRS.JPG//IHAVESPECIALCHARS.JPG
  • /IMG_4834.JPG///IMG_4834.JPG

目前,它可以很好地替换,但总是将字符串更改为小写。例如:/IMG_4834.JPG ->/img_4834.jpg

最佳答案

你的方法的当前实现总是返回小写字符串,因为它在调用 #tr 之前调用了 #downcase - 删除 #downcase 应该可以补救这。然后,在不依赖外部库的情况下,您可以修改现有方法以覆盖大写字符:

def replace_characters(name)
  name.tr('àáäâãèéëẽêìíïîĩòóöôõùúüûũñçÀÁÄÂÃÈÉËẼÊÌÍÏÎĨÒÓÖÔÕÙÚÜÛŨÑÇ ',
          'aaaaaeeeeeiiiiiooooouuuuuncAAAAAEEEEEIIIIIOOOOOUUUUUNC-')
end

关于ruby - 替换字符但保留大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36554182/

相关文章:

asp.net - 在 Ruby 中重新实现 ASP.NET 成员资格和用户密码哈希

ruby-on-rails - 使用 block 而不是散列来初始化 activerecord 对象有什么好处?

text-to-speech - 在 python 中使用 gTTS 时出现 Unicode 解码错误

r - SVD 分解中 SAS/IML 和 R 的不同结果

css - 关键帧转换翻译不适用于 Safari 和边缘

ruby - 与 awk 的 RS、NF 和 OFS 等价的 Ruby 单行代码是什么?

c# - 在 C# 中相当于 Ruby "redo"

javascript - D3 - 使用 D3 的 SVG 符号缩放

ruby - watir-webdriver 将值设置为 text_field 非常慢

java - Python 的 Java 标准 for 循环的等价物是什么?