【问题标题】:Title Case in JavaScript for diacritics (non-ASCII)JavaScript 中用于变音符号的标题案例(非 ASCII)
【发布时间】:2013-03-01 03:47:34
【问题描述】:

是否可以创建一个 JavaScript 函数,可以将字符串转换为标题大小写,但可以使用非 ASCII (Unicode) 字符?例如像这样的字符:

Áá  Àà  Ăă  Ắắ  Ằằ  Ẵẵ  Ẳẳ  Ââ  Ấấ  Ầầ  Ẫẫ  Ẩẩ  Ǎǎ  Åå  Ǻǻ  Ää  Ǟǟ  Ãã
Éé  Èè  Ĕĕ  Êê  Ếế  Ềề  Ễễ  Ểể  Ěě  Ëë  Ẽẽ  Ėė  Ȩȩ  Ḝḝ  Ęę  Ēē  Ḗḗ  Ḕḕ
etc.

例如,如果字符串是“anders ångström”,则应将其转换为“Anders Ångström”。 already exists 的脚本将转换为“Anders åNgström”。

【问题讨论】:

  • 'å'.toUpperCase() 为我工作...
  • 是的 toUpperCase() 也适用于我,但标题大小写功能不适用于以 'å' 开头的单词,因为 JavaScript 不会正确地将其包含在“整个单词”中 (\w)
  • 哦,我明白了,检查我的答案,没有\w仍然可以完成。

标签: javascript case title


【解决方案1】:

试试这个:

var str = 'anders ångström';

str = str.replace(/[^\s]+/g, function(word) {
  return word.replace(/^./, function(first) {
    return first.toUpperCase();
  });
});

console.log(str); //=> "Anders Ångström"

【讨论】:

  • 抱歉,我刚刚注意到它不适用于包含破折号(“-”)的名称,例如“luise meyer-schützmeister”。它将把它变成“Luise Meyer-schützmeister”。有没有机会改进它?
  • 要支持破折号和单引号,请将 /[^\s]+/g 更改为 /[^-'\s]+/g
【解决方案2】:

Javascript 的内置转换可识别 Unicode,例如 "å".toUpperCase() 返回 "Å"。所以我不确定你的“现有脚本”做错了什么。

但是,如果您需要完全支持 Unicode 的大小写转换(或其他 Unicode 支持),您可能需要查看unicode.js

【讨论】:

  • 谢谢。无论如何,我需要一个也适用于非 ASCII 的 Title Case 函数(来自上面链接的 toTitleCase() 的更好版本)。 Title Case 函数是大写和整个单词匹配函数的组合。
猜你喜欢
  • 2012-08-02
  • 2018-10-01
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
相关资源
最近更新 更多