已经有一个非常相似的问题。其中一种解决方案使用如下代码:
string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s
这很神奇,直到你注意到它还删除了空格、点、破折号,谁知道还有什么。
我不太确定第一个代码是如何工作的,但可以让它只去除重音吗?或者至少得到一个要保存的字符列表?我对正则表达式的了解很少,但我尝试过(无济于事):
/[^\-x00-\x7F]/n # So it would leave the dash alone
我即将做这样的事情:
string.mb_chars.normalize(:kd).gsub('-', '__DASH__').gsub
(/[^x00-\x7F]/n, '').gsub('__DASH__', '-').to_s
残暴?是的...
我也试过:
iconv = Iconv.new('UTF-8', 'US-ASCII//TRANSLIT') # Also tried ISO-8859-1
iconv.iconv 'Café' # Throws an error: Iconv::IllegalSequence: "é"
请帮忙?