【问题标题】:Javascript - convert a text with accents, spaces and capitals to one without accents with hyphens and lowercaseJavascript - 将带有重音符号、空格和大写字母的文本转换为不带连字符和小写重音符号的文本
【发布时间】:2019-07-01 00:25:57
【问题描述】:

我想将带有重音符号、空格和大写字母的文本转换为不带连字符和小写重音符号的文本。

我的解决办法是:

var text = 'Canción del Amor';
const nt = text.replace(/\s+/g, '-').normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase();

console.log(nt);

请您帮我提供一个更好的解决方案。因为我希望它与所有浏览器兼容。

【问题讨论】:

  • 你的“解决方案”根本不起作用,因为textotext 不是同一个变量
  • @JaromandaX 我认为这是一个错字是公平的。
  • @PatrickRoberts - 是的,假设现在代码有效,我看不出这个问题是关于主题的原因
  • @JaromandaX normalize() 是一种 ES6 方法。该问题特别要求提供一种具有更好浏览器兼容性的替代方法。
  • @PatrickRoberts - 据我所知,只有 Internet Exploder 不受支持 - 是不是该对仍在使用 Internet Explorer 的人说一下了对不起,您使用的浏览器非常不安全,因此您太笨而无法浏览互联网,请不要再次访问此站点

标签: javascript string cross-browser normalization backwards-compatibility


【解决方案1】:

您可以继续使用此解决方案,前提是您使用了像 unorm 这样的 polyfill。放置一个

<script type="text/javascript" src="https://unpkg.com/unorm@1.4.1/lib/unorm.js"></script>

String.prototype.normalize() 的任何用法都应该允许该函数在仅支持 ECMAScript 5 的旧浏览器中工作。

我不建议为normalize() 方法重新发明轮子; unicode 规范化需要一些相当复杂的字符串操作,最好使用已经有效的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 2016-01-03
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多