删除 javascript 字符串中的元音变音或特殊字符

发布于 2024-10-14 01:55:49 字数 329 浏览 5 评论 0原文

以前从未在 javascript 字符串中使用变音符号或特殊字符。我的问题是如何删除它们?

例如,我在 javascript 中有这个:

var oldstr = "Bayern München";
var str = oldstr.split(' ').join('-');

结果是 Bayern-München ok easy,但现在我想删除元音变音或特殊字符,例如:

希洪皇家竞技队。

我怎样才能意识到这一点?

亲切的问候,

弗兰克

Never played before with umlauts or specialchars in javascript strings. My problem is how to remove them?

For example I have this in javascript:

var oldstr = "Bayern München";
var str = oldstr.split(' ').join('-');

Result is Bayern-München ok easy, but now I want to remove the umlaut or specialchar like:

Real Sporting de Gijón.

How can I realize this?

Kind regards,

Frank

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

红尘作伴 2024-10-21 01:55:49

有一个名为“remove-accents”的 npm 包。

  1. 安装包:npm i remove-accents
  2. 导入删除
    函数:import { remove } from "remove-accents";
  3. 使用函数:remove(inputString)

Theres a npm package called "remove-accents".

  1. Install the package: npm i remove-accents.
  2. Import the remove
    function: import { remove } from "remove-accents";
  3. Use the function: remove(inputString)
一刻暧昧 2024-10-21 01:55:49

replace 应该能够为您做到这一点,例如:

var str = str.replace(/ü/g, 'u');

...当然 üu不是同一封信。 :-)

如果您尝试用某些内容(例如 -)替换给定范围之外的所有字符,您可以通过指定范围来实现:

var str = str.replace(/[^A-Za-z0-9\-_]/g, '-');

替换全部非英文字母、数字、- 或带有 -_ 的字符。 (字符范围是[...]位,开头的^表示“不”。) 这是一个实例

但这个(“Bayern-M-nchen”)对于慕尼黑先生来说可能有点不舒服。 :-) 您可以使用传递到 replace 的函数来尝试删除变音符号:

var str = str.replace(/[^A-Za-z0-9\-_]/g, function(ch) {
  // Character that look a bit like 'a'
  if ("áàâä".indexOf(ch) >= 0) { // There are a lot more than this
    return 'a';
  }
  // Character that look a bit like 'u'
  if ("úùûü".indexOf(ch) >= 0) { // There are a lot more than this
    return 'u';
  }
  /* ...long list of others...*/
  // Default
  return '-';
});

Live example

以上针对长字符串进行了优化。如果字符串本身很短,那么重复的正则表达式可能会更好:

var str = str.replace(/[áàâä]/g, 'a')
             .replace(/[úùûü]/g, 'u')
             .replace(/[^A-Za-z0-9\-_]/g, '-');

...但这是推测性的。

请注意,JavaScript 字符串中的文字字符完全没问题,但文件编码可能会带来乐趣。我倾向于坚持使用 unicode 转义。例如,上面的内容是:

var str = str.replace(/[\u00e4\u00e2\u00e0\u00e1]/g, 'a')
             .replace(/[\u00fc\u00fb\u00f9\u00fa]/g, 'u')
             .replace(' ','-');

……但是,还有很多事情要做……

replace should be able to do it for you, e.g.:

var str = str.replace(/ü/g, 'u');

...of course ü and u are not the same letter. :-)

If you're trying to replace all characters outside a given range with something (like a -), you can do that by specifying a range:

var str = str.replace(/[^A-Za-z0-9\-_]/g, '-');

That replaces all characters that aren't English letters, digits, -, or _ with -. (The character range is the [...] bit, the ^ at the beginning means "not".) Here's a live example.

But that ("Bayern-M-nchen") may be a bit unpleasant for Mr. München to look at. :-) You could use a function passed into replace to try to just drop diacriticals:

var str = str.replace(/[^A-Za-z0-9\-_]/g, function(ch) {
  // Character that look a bit like 'a'
  if ("áàâä".indexOf(ch) >= 0) { // There are a lot more than this
    return 'a';
  }
  // Character that look a bit like 'u'
  if ("úùûü".indexOf(ch) >= 0) { // There are a lot more than this
    return 'u';
  }
  /* ...long list of others...*/
  // Default
  return '-';
});

Live example

The above is optimized for long strings. If the string itself is short, you may be better off with repeated regexps:

var str = str.replace(/[áàâä]/g, 'a')
             .replace(/[úùûü]/g, 'u')
             .replace(/[^A-Za-z0-9\-_]/g, '-');

...but that's speculative.

Note that literal characters in JavaScript strings are totally fine, but you can run into fun with encoding of files. I tend to stick to unicode escapes. So for instance, the above would be:

var str = str.replace(/[\u00e4\u00e2\u00e0\u00e1]/g, 'a')
             .replace(/[\u00fc\u00fb\u00f9\u00fa]/g, 'u')
             .replace(' ','-');

...but again, there are a lot more to do...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文