fe-interview
fe-interview copied to clipboard
[js] 第4天 写一个方法把下划线命名转成大驼峰命名
第4天 写一个方法把下划线命名转成大驼峰命名
function changeLine (str) { if(typeof str !== 'string'){ alert('请确认要删除的对象为字符串!'); }else { var newName = ''; var arr = str.split('_'); arr.map((v,i)=>{ if(i===0){return}; newName += ad.substr(0,1).toUpperCase() + ad.substr(1); }) } }
function changeLine(str){ if(typeof str!=='string'){ alert('Please确认要删除的对象为字符串!'); } else { var newName =''; var arr = str.split('_'); arr.map((v,i)=> { if(i === 0){return}; newName + = ad.substr(0,1).toUpperCase()+ ad.substr(1); }) } }
function changeLine(str) { if (typeof str !== 'string') { alert('请确认要删除的对象为字符串!'); } else { var newName = ''; var arr = str.split('_'); // console.log(arr) arr.map((v, i) => { if (i === 0) { return aa=v}; newName += aa+v.substr(0, 1).toUpperCase() + v.substr(1); }) return newName } }
function toCamel(str) {
return str.replace(/(\w)(_)(\w)/g, (match, $1, $2, $3) => `${$1}${$3.toUpperCase()}`)
}
console.log(toCamel('a_bc_def')) // aBcDef
上面的方法对 a_c_def 会返回 aC_def,想要返回 ACDef 得:
function toCamel(str) {
str = str.replace(/(\w)/, (match, $1) => `${$1.toUpperCase()}`)
while(str.match(/\w_\w/)) {
str = str.replace(/(\w)(_)(\w)/, (match, $1, $2, $3) => `${$1}${$3.toUpperCase()}`)
}
return str
}
console.log(toCamel('a_c_def')) // ACDef
function toCamelCase(str) {
if (typeof str !== 'string') {
return str;
}
return str
.split('_')
.map(item => item.charAt(0).toUpperCase() + item.substr(1, item.length))
.join('');
}
function toCamel(str) {
str = str.replace(/_(\w)/g, (match, $1) => `${$1.toUpperCase()}`)
return str.substr(0,1).toUpperCase() + str.substr(1);
}
console.log(toCamel('a_bc_def'))
function strToCamel(str){ return str.replace(/(^|_)(\w)/g,(m,$1,$2)=>$2.toUpperCase()); }
let str = 'hello_word'
function capital(str) { let s = str if(typeof s !== 'string'){ alert('类型不对哦~') } let arrStr = s.split('_') let newStr = ''
arrStr.forEach((v,i)=>{
if(v == ''){
arrStr.splice(i,1) // 筛选掉空 如:hello_
}
newStr = newStr + v.substr(0,1).toUpperCase() + v.substr(1)
})
return newStr
}
console.log(capital(str)) // HelloWord
function transoform(str) {
var result = str.split('');
result.forEach(function(e, i, a) {
if (e === '_') { a[i + 1] = a[i + 1].toUpperCase(); }
});
return result.join('').replace(/\_*/g, '');
}
var result = transoform('if_you_are_my_world');
console.log(result); // ifYouAreMyWorld
function changeStr(str){
if(str.split('_').length==1)return;
str.split('_').reduce((a,b)=>{
return a+b.substr(0,1).toUpperCase() + b.substr(1)
})
}
function capitalize(str) { const camelizeRE = /(\w)/g return str.replace(camelizeRE, (, c) => c? c.toUpperCase():'') }
var str= "aaa_bbb_ccc"
function traHump(str) {
var reg = /^[_a-zA-Z]+$/;
if (typeof str !== "string" || !reg.test(str)) return;
var newArr = [];
var arr = str.split("");
arr.forEach((item, index) => {
if (item !== "_") {
newArr.push(item);
} else {
newArr.push(arr[index+1].toUpperCase());
}
})
console.log(newArr.join(""));
}
traHump(str);
// 此情况未考虑:___a____
function transoform(str) { var result = str.split(''); result.forEach(function(e, i, a) { if (e === '_') { a[i + 1] = a[i + 1].toUpperCase(); } }); return result.join('').replace(/\_*/g, ''); } var result = transoform('if_you_are_my_world'); console.log(result); // ifYouAreMyWorld
有一个小问题,当str以 _ 结尾的时候,不存在 a[i+1]
function snakeToCamel(str: string) {
const s = str
.split('_')
.filter(v => !!v)
.map(v => v[0].toUpperCase() + v.substr(1))
.join('');
return s[0].toLowerCase() + s.substr(1);
}
const toCamel = str =>
str
.split("_")
.filter(s => !!s)
.map((s, index) => (index === 0 ? s : s[0].toUpperCase() + s.slice(1)))
.join("");
console.log(toCamel("a_bc_d"));
console.log(toCamel("bc_d"));
console.log(toCamel("bc___________ed"));
console.log(toCamel("_______a_bc_d__"));
// 顺便写的驼峰转下划线
const toSnake = str => {
const target = str[0].toLowerCase() + str.slice(1);
let result = target;
(target.match(/[A-Z]/g) || []).forEach(word => {
result = result.replace(word, `_${word.toLowerCase()}`);
});
return result;
};
console.log(toSnake("aBcDeFg"));
console.log(toSnake("ABCDEFG"));
console.log(changeHump('aewq_a_rgt____eryry')) function changeHump(str){ if(typeof str !== 'string'||str.split('').length===1) return str; return (str.split('').filter(s => !!s).map(e=>(e.substr(0, 1).toUpperCase()+e.substr(1)))).join(''); }
function func(str){
return str.replace(/(_)([a-z])/g,function(rs){
return arguments[2].toUpperCase()
}
)
}
func("a_c_def")
献丑了,通过去掉下划线和空格的方式进行实现 var underline = "safaf_asd___cddaa_________ssa" function underlines(und) { let unds = und let a = 0 let joint = "" unds = unds.split("_") for (let i = 0; i < unds.length; i++) { if (unds[i] !== "") { if (a === 0) { joint += unds[i] a++ } else if (a > 0) { // charAt() 方法可返回指定位置的字符 // toUpperCase() 方法用于把字符串转换为大写 // slice(),返回一个新的数组,该方法可从已有的数组中返回选定的元素 joint += unds[i].charAt(0).toUpperCase() + unds[i].slice(1) } } } return joint } underlines(underline)
(str) => str.split('_').reduce((acc, cur) => acc + cur.slice(0,1).toUpperCase() + cur.slice(1))
var resstr = "";
"html___accc_ddddd".split('_').forEach(element => {
if (element)
resstr += element[0].toUpperCase() + element.substring(1, element.length);
})
console.log(resstr)
const changeStr = (str) => {
if(typeof str != 'string') return 'go away'
let _str = str.replace(/__+/g, '_') // '_what_the_f**k_'
if (_str.startsWith('_')) _str = _str.substr(1, _str.length) // 'what_the_f**k_'
if (_str.endsWith('_')) _str = _str.substr(0, _str.length - 1) // 'what_the_f**k'
return _str.split('_').reduce((acc, x) => acc + x[0].toUpperCase() + x.substr(1))
}
changeStr('_what______the_f**k__')
function lineChangeUpper(str) { if (typeof str !== "string") { throw new Error("非字符串"); } else { let test_arr = str.split(""); if (str.indexOf("") > 0) { for (let key in test_arr) { if (key > 0) { test_arr[key] = test_arr[key][0].toUpperCase() + test_arr[key].substr(1); } } return test_arr.join(""); } else { throw new Error("没有下划线"); } } }
let str = "up_set_to"; console.log(lineChangeUpper(str));
不太明白那些写那么复杂的有啥用???笔试题会让你写这么复杂的,越短小易懂越好; 哈哈,开个玩笑,你们写的好秀,面试官会眼前一亮,牛逼
const underlineToBigHump = str =>
typeof str === 'string'
? str
.split('_')
.map(item => item.toLocaleLowerCase())
.reduce(
(pre, item) =>
item ? `${pre}${item[0].toLocaleUpperCase()}${item.slice(1)}` : pre,
''
)
: str
function uChangeH(str){ let arr = str.split("_") let newArr = arr.map((e,index)=> { if(index >0){ e = e[0].toLocaleUpperCase() + e.slice(1,e.length); } return e }) return newArr.join(""); }
function change2Letter(str) { if(typeof str !== 'string'){ return '请输入字符串' } return /[0-9a-zA-Z\$]+\_/.test(str)?str.split('_').map(function (item,index) { return index === 0 ? item:item.substring(0,1).toUpperCase() + item.substring(1); }).join(''):str; }
function toCamelCase(str) {
return str.replace(/_(\w)/g, function(m, $1) {
return $1 ? $1.toUpperCase() : m
})
}
toCamelCase('_a_b_c__')
function snakeToCamel ( string = `` ) {
return string.replace( /\u005f([\u0061-\u007a])/gu, ( match, char ) => char.toUpperCase() );
}
// 1.传入参数,判断字符串类型,非返回
// 2.通过split('_')把字符串分割成数组
// 3.遍历数组把每一项开头转换成大写字母,并把每一项都拼接到一起
// 4.返回字符串
function changeStr(str){
let arr = [];
let newStr = '';
if(!str||str===' '|| typeof str !== 'string'){
return false;
}
arr = str.split('_');
arr.map(item => {
if(item){ //过滤空字符
newStr += item.substr(0,1).toUpperCase()+item.substr(1)
}
});
console.log(newStr);
}
changeStr('_abc_ghe_nb_w_') // 输出:AbcGheNbW
function changeStr(str){
var newName = '';
var arr = str.split('_');
var first = arr[0];
if(arr.length == 1){
console.log(first)
}else{
for(var i=1;i<arr.length;i++){
newName += arr[i].charAt(0).toUpperCase() + arr[i].substr(1,arr[i].length)
if(i==arr.length-1){
console.log(first+newName)
}
}
}
}
changeStr("add_ffff_dd")
let val = 'a_b_c' function conversion(val) { if (val.indexOf('_') !== -1) { // 判断是否有下划线存在 let arr = val.split('_') // 切割字符串 let str = arr[0] // 第一个字符串首字母不用大写 for (let i = 1; i < arr.length; i++) { // 其余字符串首字母转成大写 let str_item = arr[i].replace(arr[i][0], arr[i][0].toUpperCase()) str += str_item // 拼接字符串 } console.log(str) } } conversion(val)