下面的代码是我的实现,不知道有没有更好的实现方案。
javascript
String.prototype.firstUpperCase = function(){ return this.replace(/\b(\w)(\w*)/g, function($0, $1, $2) { return $1.toUpperCase() + $2.toLowerCase(); }); }
求接龙。
下面的代码是我的实现,不知道有没有更好的实现方案。
javascript
String.prototype.firstUpperCase = function(){ return this.replace(/\b(\w)(\w*)/g, function($0, $1, $2) { return $1.toUpperCase() + $2.toLowerCase(); }); }
求接龙。
其实有很多方法。
最常见的,最基础的:
1.先split()成数组。
2.将数组中的元素全部小写化。(toLowerCase())
3.使用replace(),toUpperCase()方法将每一项首字母大写化,之后join()就可以了。
但是这样确实很麻烦。
正在学习ES6中,ES6里面解决这个方案这样写就可以了。
function firstUpperCase(str) {
return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
}
是不是觉得很简洁?
String.prototype.firstUpperCase=function(){
return this.replace(/^\S/,function(s){return s.toUpperCase();});
}
why not use CSS? text-transform: capitalize;can solve this.
you can also use this function:
function firstUpperCase(str) {
return str.toLowerCase().replace(/\b[a-z]/g,function(s){return s.toUpperCase();});
}
but if only want to change the initials of the whole strings,try this:
function firstUpperCase(str) {
return str.toLowerCase().replace(/^\S/g,function(s){return s.toUpperCase();});
}
正则表达式\b会把英文缩写,譬如I'm拆分成两个部分,导致输出为I'M,所以不能使用\b
我先将字符串按照空格拆分,然后使用charAt(0)选中首字符,再用replace()进行大写替换。
function titleCase(str) {
//将字符串转化为消协,并拆分成单词
str=str.toLowerCase().split(" ");
//循环将每个单词的首字母大写
for(var i=0;i<str.length;i++){
//选取首个字符
var char=str[i].charAt(0);
//将单子首字符替换为大写
str[i]=str[i].replace(char,function(s){return s.toUpperCase();});
}
//拼合数组
str=str.join(" ");
return str;
}
String.prototype.firstUpperCase = function () {
return this.toString()[0].toUpperCase() + this.toString().slice(1);
}
不改变原字符串。(暂时想不到改变原字符串的方式,因为我记得字符串是只读的)
function firstUpperCase(source) {
return source[0].toLocaleUpperCase().concat(source.slice(1))
}
在上面的回答下改进了以下,简单直接
String.prototype.firstUpperCase = function(){
return this.replace(/^\S|\s(\S)/g, s => s.toUpperCase())
}
8 回答5.9k 阅读✓ 已解决
9 回答9.3k 阅读
6 回答4.9k 阅读✓ 已解决
5 回答3.6k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
7 回答9.9k 阅读
5 回答7.2k 阅读✓ 已解决
CSS 完全搞定啊 text-transform: capitalize;
这么简单的功能 还用js 就太浪费累