javascript - 如何在 JavaScript 中将名称放入标题大小写中?

标签 javascript regex coldfusion-8

我一直在寻找如何使用 JavaScript 将名称设置为正确的大小写,例如乔治麦克霍尔将成为乔治麦克霍尔。我能够在 Codeproject 上找到一篇关于如何做到这一点的文章,以及一个打算这样做的人:

function toProperCase(s){
    return s.toLowerCase().replace( /\b((m)(a?c))?(\w)/g,
    function($1, $2, $3, $4, $5) {
  if($2){
   return $3.toUpperCase()+$4+$5.toUpperCase();
  } 
  return $1.toUpperCase(); 
 });
}

这允许我正在寻找的东西。但我需要能够进一步扩展它并添加更多案例。

我找到了 another page on John Gruber's site做标题大小写,但我只看做名字。

那么,有人对扩展它有想法吗?我真的只是在寻找正确方向的一点。

编辑: 由于我似乎在这里碰壁,也许有人有办法在服务器端做到这一点。这至少是目前在服务器端使用 ColdFusion。我已经看到了 C# 实现,但目前无法迁移到 C#。

最佳答案

结合类似帖子的一些答案:

    var selElem = document.getElementById("fromName");

    selElem.addEventListener("change", function() {
      document.getElementById("result").innerHTML = properName(selElem.value);
    });

    function properName(name) {
      return ("" + name.replace(/[^\s\-\']+[\s\-\']*/g, function(word) {
        return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
      }).replace(/\b(Van|De|Der|Da|Von)\b/g, function(nobiliaryParticle) {
        return nobiliaryParticle.toLowerCase();
      }).replace(/Mc(.)/g, function(match, letter3) {
        return 'Mc' + letter3.toUpperCase();
      }));
    }
<p>
  Choose a name to see it properly capitalised:
</p>
<select id="fromName">
  <option>Select a name</option>
  <option>EMMA HURST</option>
  <option>CHRIS HINDI</option>
  <option>OSCAR GRENFELL</option>
  <option>JIM CASEY</option>
  <option>MEOW-LUDO DISCO GAMMA MEOW-MEOW</option>
  <option>PAT SHEIL</option>
  <option>NOEL MCFARLANE</option>
  <option>CHRIS MCLACHLAN</option>
  <option>ANTHONY ALBANESE</option>
  <option>DAVID VAN GOGH</option>
  <option>JAMIE ELVY</option>
</select>
<p>Result: <span id="result"></span></p>

关于javascript - 如何在 JavaScript 中将名称放入标题大小写中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4134494/

相关文章:

javascript - jQuery id 不产生文本表示

javascript - 在 PURE JavaScript 上自动完成第一个字母

javascript - ExtJS--在展开/折叠时调整面板高度

regex - 使用环境变量替换 Sed 字符串

python - 无法匹配正则表达式模式

java - 在 Android 上使用正则表达式验证字符串

coldfusion - 正确使用 cflock 标签 ColdFusion

coldfusion - 您提供的符号不是函数

javascript - 迭代 Nightwatch 中的特定测试用例