289

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

  • cHIcaGO==>芝加哥

但当它

  • 圣地亚哥==>圣地亚哥

我如何使它成为圣地亚哥?

函数convert_case(){文档配置文件格式城市值=document.profile_form.city.value.substr(0,1).toUpperCase()+document.profile_form.city.value.substr(1).toLowerCase();}
0

4个答案4

重置为默认值
713

有一个好答案在这里:

函数toTitleCase(str){return str.replace(/\w\S*/g,函数(txt){return txt.charAt(0).toUpperCase()+txt.substr(1).toLowerCase(;});}

或在ES6中:

var text=“foo bar loo zoo moo”;text=text.toLowerCase().split(“”).map((s)=>s.charAt(0).toUpperCase()+s.substring(1)).join(“”);
14
  • 4
    只是想知道(可能是个新手问题),但javascript如何知道函数(txt)参数正在引用字符串? 是因为你在打电话吗代替字符串所以它可以这样假设?
    – 八月
    评论 2012年8月31日23:03
  • 6
    它实际上并没有通过字符串-它传递“匹配的子字符串”,例如正则表达式的结果。Mozilla开发页面上有一个很好的解释,网址是developer.mozilla.org/en-US/docs/JavaScript/Reference/…,标题下将函数指定为参数 评论 2012年9月1日11:46
  • 12
    很好的脚本,但它对音调符号并不适用。例如,它会将“andersángström”转换为“andersángströ姆”。如果需要脚本来处理此类字符串,请检查stackoverflow.com/questions/15150168/… 评论 2013年8月26日2:28
  • 7
    我可以推荐使用\b\w(黑白)而不是\带\S*因为这将选择每个单词的第一个字母,即使中间的字符是斜杠或破折号而不是空格。
    – 用户4513271
    评论 2015年9月15日20:10
  • 4
    不适用于非英语单词。 评论 2016年2月26日10:17
153

您可以使用CSS:

p.大写{text-transform:大写;}

更新(JS解决方案):

根据Kamal Reddy的评论:

document.getElementById(“myP”).style.textTransform=“大写”;
14
  • 2
    w3schools.com/css/pr_text_text-transform.asp
    – 猎人
    评论 2011年2月2日19:17
  • 24
    您不能只使用text-transform:capitalie来表示cHIcaGO==>cHIcaGO。你会得到芝加哥而不是芝加哥。它只转换字符串的第一个字母。 评论 2011年2月2日21:05
  • 13
    投了反对票,因为问题指定了JavaScript,而您使用了不同的技术给出了解决方案。 评论 2017年1月6日6:46
  • 14
    我同意@RichardSmith-Unna的观点,这个问题指定了如何使用Javascript实现这一点。这个答案相当于回答“我如何用铅笔和纸划分数字”,“拿一个计算器,使用除法函数”。 评论 2017年2月3日19:57
  • 5
    由于未使用OP要求的语言回答,投了反对票 评论 2017年2月21日23:02
27
函数convertCase(str){var lower=字符串(str).toLowerCase();return lower.replace(/(^|)(\w)/g,函数(x){将x返回到UpperCase();});}
6
  • 1
    @恩弗的评论不会起作用,因为字符串到大写将绑定到字符串对象(字符串,而不是子字符串)
    – 基基托
    评论 2013年4月1日12:17
  • 9
    ES6快捷方式:str.toLowerCase().replace(/(^|)(\w)/g,s=>s.toUpperCase(()) 评论 2017年2月21日18:44
  • @克劳迪奥·霍兰达:。。。与答案相同:) 评论 2017年3月16日11:52
  • 它不适用于口音,比如“Úrsula” 评论 2017年9月28日14:13
  • 1
    @我认为你应该删除你的评论,我看到你已经知道它没有按预期工作,所以没有必要把它留在那里。。。(无论如何都要感谢您的尝试) 评论 2019年3月26日13:11
13

JavaScript函数:

String.prototype.capitalize=函数(){return this.replace(/(^|\s)([a-z])/g,函数(m,p1,p2){return p1+p2.toUpperCase();});};

要使用此功能:

capitaliedString=someString.toLowerCase().capitalie();

此外,这将适用于多个单词的字符串。

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

  • 4
    看起来不错,但不要将此添加到字符串.原型. 评论 2016年10月3日3:56
  • 如果(!String.prototype.toTitleCase){String.propotype.toTitleCase=function(){return this.toLowerCase().replace(/(^|\s)([a-z])/g,函数(m,p1,p2){retain p1+p2.toUpperCase(;});};}如果要添加到String.prototype并将添加到LowerCase() 评论 2017年3月3日4:01
  • 2
    它不适用于口音,如“u rsula” 评论 2017年9月28日14:19

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.