用string大写字母

什么是最好的方法来利用string中的单词?

在string中大写单词的最短实现是使用ES6的箭头函数:

 'your string'.replace(/\b\w/g, l => l.toUpperCase()) // => 'Your String' 

兼容ES5的实现:

 'your string'.replace(/\b\w/g, function(l){ return l.toUpperCase() }) // => 'Your String' 

正则expression式基本上匹配给定string中每个单词的第一个字母,并只将该字母转换为大写字母:

  • \ b匹配单词边界(单词的开始或结尾);
  • \ w匹配以下元字符[a-zA-Z0-9]。

干杯!

 String.prototype.capitalize = function() { return this.replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); }); }; 

用法:

 'your string'.capitalize(); // -> 'Your String' 

  • 修正了Marco Demaio的解决scheme,其中前一个空格的第一个字母没有大写。

     ' javascript'.capitalize(); // -> ' Javascript' 
  • 可以处理国家的符号和重音字母。

     'бабушка курит трубку'.capitalize(); // -> 'Бабушка Курит Трубку' 'località àtilacol'.capitalize() // -> 'Località Àtilacol' 

添加我觉得很有用

 String.prototype.capitalize = function(lower) { return (lower ? this.toLowerCase() : this).replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); }); }; 'javaSCrIPT'.capitalize(); // -> 'JavaSCrIPT' 'javaSCrIPT'.capitalize(true); // -> 'Javascript' 
 function capitalize(s){ return s.toLowerCase().replace( /\b./g, function(a){ return a.toUpperCase(); } ); }; capitalize('this IS THE wOrst string eVeR'); 

输出:“这是最糟糕的弦乐”

更新:

看来这个解决scheme取代了我的: https : //stackoverflow.com/a/7592235/104380

只要inputstring中没有重音字母 , vsync提供的答案就可以工作。

我不知道原因,但显然正则expression式中的\b也是带有重音的字母(在IE8和Chrome上testing过),所以像"località"这样的string会被错误地转换成"LocalitÀ" (字母大写)正则expression式认为这是一个字的边界)

与重音字母一起使用的更一般的function是这样的:

 String.prototype.toCapitalize = function() { return this.toLowerCase().replace(/^.|\s\S/g, function(a) { return a.toUpperCase(); }); } 

你可以像这样使用它:

 alert( "hello località".toCapitalize() ); 

John Resig(jQuery的声誉)将由John Gruber编写的Perl脚本移植到JavaScript中。 这个脚本利用更聪明的方式,它不会像“of”和“and”这样的小词汇大写。

你可以在这里find它: 标题在JavaScript中的大写

使用JavaScript和HTML

 String.prototype.capitalize = function() { return this.replace(/(^|\s)([az])/g, function(m, p1, p2) { return p1 + p2.toUpperCase(); }); }; 
 <form name="form1" method="post"> <input name="instring" type="text" value="this is the text string" size="30"> <input type="button" name="Capitalize" value="Capitalize >>" onclick="form1.outstring.value=form1.instring.value.capitalize();"> <input name="outstring" type="text" value="" size="30"> </form> 

由于每个人都给了你所要求的JavaScript答案,所以我会抛出CSS属性text-transform: capitalize来做到这一点。

我意识到这可能不是你所要求的 – 你没有给我们任何你正在运行的上下文 – 但如果只是为了演示文稿,我一定会用CSS替代。

这个代码在点之后大写单词:

 function capitalizeAfterPeriod(input) { var text = ''; var str = $(input).val(); text = convert(str.toLowerCase().split('. ')).join('. '); var textoFormatado = convert(text.split('.')).join('.'); $(input).val(textoFormatado); } function convert(str) { for(var i = 0; i < str.length; i++){ str[i] = str[i].split(''); if (str[i][0] !== undefined) { str[i][0] = str[i][0].toUpperCase(); } str[i] = str[i].join(''); } return str; } 

http://www.mediacollege.com/internet/javascript/text/case-capitalize.html是其中的一个答案。;

Google可以为您解决这些问题。

一个简单的方法是用空格分割string,大写结果数组中每个元素的第一个字母并将它们连接在一起。 这留下了现有的大写(例如,HTML保持HTML,并不会像Html一样愚蠢)。 如果您不想要这种影响,请在分割之前将整个string转换为小写字母。

我的解决scheme

 String.prototype.toCapital = function () { return this.toLowerCase().split(' ').map(function (i) { if (i.length > 2) { return i.charAt(0).toUpperCase() + i.substr(1); } else { return i; } }).join(' '); }; 

例:

 'álL riGht'.toCapital(); // Returns 'Áll Right' 

我喜欢轻松过程。 首先将string更改为数组,以便于迭代,然后使用映射函数更改每个单词,如您所愿。

 function capitalizeCase(str) { var arr = str.split(' '); var t; var newt; var newarr = arr.map(function(d){ t = d.split(''); newt = t.map(function(d, i){ if(i === 0) { return d.toUpperCase(); } return d.toLowerCase(); }); return newt.join(''); }); var s = newarr.join(' '); return s; } 

Jquery或Javascipt不提供一个内置的方法来实现这一点。

CSStesting变换(text-transform:capitalize;)并不真正大写string的数据,而是在屏幕上显示大写渲染。

如果您正在使用普通的vanillaJS寻找在数据级别上更合理的方法,请使用此解决scheme=>

 var capitalizeString = function (word) { word = word.toLowerCase(); if (word.indexOf(" ") != -1) { // passed param contains 1 + words word = word.replace(/\s/g, "--"); var result = $.camelCase("-" + word); return result.replace(/-/g, " "); } else { return $.camelCase("-" + word); } }