Javascript 如何大写每个单词的第一个字母,比如两个单词的城市?

Javascript 如何大写每个单词的第一个字母,比如两个单词的城市?,javascript,Javascript,当城市有一个词时,我的JS工作得很好: 芝加哥==>芝加哥 但是当它 圣地亚哥==>圣地亚哥 我怎样才能让它变成圣地亚哥 function convert_case() { document.profile_form.city.value = document.profile_form.city.value.substr(0,1).toUpperCase() + document.profile_form.city.value.substr(1)

当城市有一个词时,我的JS工作得很好:

  • 芝加哥==>芝加哥
但是当它

  • 圣地亚哥==>圣地亚哥
我怎样才能让它变成圣地亚哥

function convert_case() {
    document.profile_form.city.value =
        document.profile_form.city.value.substr(0,1).toUpperCase() + 
        document.profile_form.city.value.substr(1).toLowerCase();
}
您可以使用CSS:

p.capitalize {text-transform:capitalize;}
更新(JS解决方案): 根据Kamal Reddy的评论:

document.getElementById("myP").style.textTransform = "capitalize";
有一个很好的答案:

或在ES6中:

var text = "foo bar loo zoo moo";
text = text.toLowerCase()
    .split(' ')
    .map((s) => s.charAt(0).toUpperCase() + s.substring(1))
    .join(' ');

JavaScript函数:

String.prototype.capitalize = function(){
       return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
      };
capitalizedString = someString.toLowerCase().capitalize();
要使用此功能,请执行以下操作:

String.prototype.capitalize = function(){
       return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
      };
capitalizedString = someString.toLowerCase().capitalize();
此外,这将适用于多个单词字符串


为了确保将转换后的城市名称以小写和首字母大写的形式注入数据库,您需要在将其发送到服务器端之前使用JavaScript。CSS只是设置样式,但实际数据将保持预先设置的样式。看看这个例子,比较警报消息和样式化输出。

你不能只使用文本转换:cHIcaGO的大写==>cHIcaGO。你会得到芝加哥而不是芝加哥。它只是简单地转换字符串的第一个字母。因为问题指定了JavaScript,而您使用不同的技术给出了解决方案。我同意@RichardSmith Unna,问题指定了如何使用JavaScript实现这一点。这个回答相当于回答“我如何用铅笔和纸分割数字”和“获取计算器并使用除法函数”。由于没有使用OPs请求的语言进行回答而进行向下投票只是想知道(可能是一个新手问题),但是javascript如何知道
函数(txt)中的txt
参数指的是
str
?这是因为您在
str
上调用
replace
,因此它可以假定?它实际上并没有传入
str
——而是传入“匹配的子字符串”——例如正则表达式的结果。Mozilla开发页面上有一个很好的解释,标题是
指定函数作为参数
Nice脚本,但它不适用于变音符号,例如,它将“andersångström”转换为“andersångström”。如果您需要脚本来处理此类字符串,请检查我是否建议使用
\b\w
而不是
\w\S*
,因为这样会选择每个单词的第一个字母,即使中间的字符是斜杠或破折号而不是空格。对于非英语单词也不起作用。@enver的注释将不起作用,因为
String.toUpperCase
将绑定到
String
对象(
将是
String
,而不是子字符串)ES6快捷方式:
str.toLowerCase().replace(/(^ |)(\w)/g、 s=>s.toUpperCase())
@ClaudioHolanda:。。。这与答案相同:)它不适用于口音,比如“Úrsula”@rakensi我想你应该删除你的评论,我看到你已经知道它没有预期的效果,所以没有必要把它留在那里。。。(无论如何感谢您的尝试)看起来不错,但是不要将此添加到
String.prototype
如果(!String.prototype.toTitleCase){String.prototype.toTitleCase=function(){return this.toLowerCase().replace(/(^ |\s)([a-z])/g,function(m,p1,p2){return p1+p2.toUpperCase()}};}
如果要添加到String.prototype并添加一个toLowerCase(),则不能使用重音符号,如“Úrsula”
function convertCase(str) {
  var lower = String(str).toLowerCase();
  return lower.replace(/(^| )(\w)/g, function(x) {
    return x.toUpperCase();
  });
}