当前位置:  开发笔记 > 编程语言 > 正文

从字符串中删除重音符号/变音符号,同时保留其他特殊字符(尝试过mb_chars.normalize和iconv)

如何解决《从字符串中删除重音符号/变音符号,同时保留其他特殊字符(尝试过mb_chars.normalize和iconv)》经验,为你挑选了1个好方法。

有一个非常类似的问题.其中一个解决方案使用如下代码:

string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s

这会产生奇迹,直到你注意到它还会移除空格,圆点,破折号以及谁知道还有什么.

我不是很确定第一个代码是如何工作的,但它是否可以剥离重音符号?或至少给出一个保留的字符列表?我对regexps的了解很少,但我尝试过(无济于事):

/[^\-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: "é"

请帮忙?



1> bobince..:

它还可以删除空格,圆点,短划线以及谁知道还有什么.

它不应该.

string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s

您输入错误,在x00之前应该有反斜杠,以引用NUL字符.

/[^\-x00-\x7F]/n # So it would leave the dash alone

你在'\'和'x'之间放了' - ',这将打破对空字符的引用,从而打破范围.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有