给一个字符串返回首字母大写
测试点:
titleCase("I'm a little tea pot") 应该返回一个字符串
titleCase("I'm a little tea pot") 应该返回 "I'm A Little Tea Pot".
titleCase("sHoRt AnD sToUt") 应该返回 "Short And Stout".
titleCase("HERE IS MY HANDLE HERE IS MY SPOUT") 应该返回 "Here Is My Handle Here Is My Spout".
我自己最初的想法:将所有单词拆分开后,再拆分单词,首字母大写,其余字母小写
实现:
function titleCase ( str) {
var word= str. split ( ' ' ) ;
var sword= [ '' ] ;
var Tstr= '' ;
for ( var i= 0 ; i< word. length; i++ ) {
for ( var j= 0 ; j< word[ i] . length; j++ ) {
temp= '' ;
if ( j== 0 ) {
temp= word[ i] [ 0 ] . toUpperCase ( ) ;
} else {
temp= word[ i] [ j] . toLowerCase ( ) ;
}
sword[ i] += temp;
}
Tstr+= sword[ i] ;
}
str= Tstr. replace ( /undefined/g , ' ' ) ;
console. log ( str) ;
return str;
}
titleCase ( "i'm a little tea pot" ) ;
虽然最终实现了,但是问题很大,打印sowrd时疯狂undefined,如:“undefinedI'm”、“undefinedA”,所以不得以我把它替换为了空格符,后来想通了是因为没有给它赋初值,所以进行了更改:
function titleCase ( str) {
var word= str. split ( ' ' ) ;
var sword= [ ] ;
for ( var i= 0 ; i< word. length; i++ ) {
sword[ i] = '' ;
for ( var j= 0 ; j< word[ i] . length; j++ ) {
var temp= '' ;
if ( j== 0 ) {
temp= word[ i] [ 0 ] . toUpperCase ( ) ;
} else {
temp= word[ i] [ j] . toLowerCase ( ) ;
}
sword[ i] += temp;
}
}
str= sword. join ( ' ' ) ;
console. log ( str) ;
return str;
}
titleCase ( "I'm a little tea pot" ) ;
在网上看了个大佬的代码,发现我的方法掌握的还是太少了,
比如:
//把字符串所有的字母变为小写,并根据空格转换成字符数组
var arr = str.toLowerCase().split(" ");
//把第一个字符变为大写
arr[i] = arr[i][0].toUpperCase() + arr[i].substring(1,arr[i].length);
stringObject.substring(start,stop)
参数 描述
start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
stop
可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。
如果省略该参数,那么返回的子串会一直到字符串的结尾。
一下子可以精简好多代码........努力吧渣渣!