题目:
例如:user-english-name 变为驼峰 userEnglishName
function transString(){
// 完善代码
}
transString("user-english-name ") // 输出:userEnglishName
解答:
方法一:
function transString(str){
let arr=str.split('-');
let str1;
for(let i=1;i<arr.length;i++){
arr[i]=arr[i].replace(arr[i].charAt(0),arr[i].charAt(0).toUpperCase() );
}
str1=arr.join('');
return str1;
}
涉及到的方法:
- split()方法
语法:str.split(separator, limit) separator:指定的分隔符(如果忽略此参数,将会把整个字符串作为数组的第一个(也是唯一一个)元素返回) limit:指定返回数组的最大长度
- replace()方法
语法:str.replace(oldSubstr, newSubstr) 用newSubstr来替换oldSubstr,返回更新后的字符串,这个更新的只是相同字母的第一个,例如:abcabc,在对a进行替换时,只会作用于第一个a
拓展:replaceAll()方法:将所有的同一个字母进行替换,例如:abcabc,将a进行替换时,两个a都会被替换
- charAt(index):获取到字符串的第index+1个字符
- toUpperCase()方法
语法:str.toUpperCase() 不需要参数
功能:用于将字符串转换为全大写形式
注意:该方法不会修改原始字符串,而是返回一个新的字符串。如果需要修改原始字符串,可以使用赋值操作。
相关:toLowerCase()方法:将字符串转换为全小写形式
- join()方法
语法:arr.join([separator]) 没有参数,默认以逗号作为分隔符
功能:用一个指定的分隔符将数组中的所有元素链接起来
方法二:
var transString = function transString(s) {
let chars = s.split('-');
// 循环遍历,将每个单词首字母大写,接着与后面字符拼接
for(let i = 1; i < chars.length; i++) {
arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
}
return chars.join('');
}
涉及到的方法:
- subString()方法:
语法:str.substring(indexStart, [indexEnd]) indexStart:表示从何处开始提取字符串中的字符。 indexEnd(可选): 表示从何处结束提取字符串中的字符(不包含该下标)
方法三:
function transString(str) {
let arr = str.split('-');
let result = '';
for (let i = 1; i < arr.length; i++) {
arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1);
result += arr[i];
}
return arr[0] + result;
}
涉及到的方法:
- slice方法:
str.slice(beginIndex, [endIndex]) 从末尾开始计数是从-1、-2...这样数
arr.slice(beginIndex, [endIndex]) 从头开始计数是0,1.....
功能:用于提取一个字符串和一个数组的一部分,并返回一个新的字符串和数组
与substring()的区别:
1、slice()既可以处理字符串,也可以处理数组,substring只能处理字符串
2、处理负数下标时:slice() 方法会将负数下标视为从字符串末尾开始计数,而 ,substring() 方法会将负数下标视为 0
方法四:
function transString(str) {
return str.trim().split('-').map((word, index) => { //word:split('-') 方法返回的每一个子字符串
if (index === 0) { //index是word在数组中的索引值
return word;
} else {
return word[0].toUpperCase() + word.slice(1);
}
}).join('');
}
涉及到的方法:
- trim()方法:用于去除字符串两端的空白字符
两个变体方法:
- trimStart()(或 trimLeft()):只去除字符串开头的空白字符
- trimEnd()(或 trimRight()):只去除字符串结尾的空白字符
方法五:
function transString(str) {
return str.trim().split('-').reduce((acc, curr, index) => { //acc:上一次回调函数的返回值 curr:当前值 index:当前值的索引
if (index === 0) {
return curr;
} else {
return acc + curr[0].toUpperCase() + curr.slice(1);
}
}, '');
}