fe-interview icon indicating copy to clipboard operation
fe-interview copied to clipboard

[js] 第4天 写一个方法把下划线命名转成大驼峰命名

Open haizhilin2013 opened this issue 5 years ago • 187 comments

第4天 写一个方法把下划线命名转成大驼峰命名

haizhilin2013 avatar Apr 19 '19 21:04 haizhilin2013

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); }) } }

undefinedYu avatar Apr 26 '19 05:04 undefinedYu

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 } }

Mr-mi avatar May 06 '19 01:05 Mr-mi

function toCamel(str) {
  return str.replace(/(\w)(_)(\w)/g, (match, $1, $2, $3) => `${$1}${$3.toUpperCase()}`)
}

console.log(toCamel('a_bc_def')) // aBcDef 

linghucq1 avatar May 08 '19 08:05 linghucq1

上面的方法对 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 

linghucq1 avatar May 08 '19 08:05 linghucq1

function toCamelCase(str) {
  if (typeof str !== 'string') {
    return str;
  }
  return str
    .split('_')
    .map(item => item.charAt(0).toUpperCase() + item.substr(1, item.length))
    .join('');
}

coderfe avatar May 08 '19 09:05 coderfe

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'))

lantian1024 avatar May 15 '19 10:05 lantian1024

function strToCamel(str){
    return str.replace(/(^|_)(\w)/g,(m,$1,$2)=>$2.toUpperCase());
}

qqdnnd avatar May 16 '19 07:05 qqdnnd

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

douxiaohou avatar Jun 05 '19 06:06 douxiaohou

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

likeke1997 avatar Jun 05 '19 07:06 likeke1997

 function changeStr(str){
   if(str.split('_').length==1)return;
   str.split('_').reduce((a,b)=>{
     return a+b.substr(0,1).toUpperCase() + b.substr(1)
   })
}

myprelude avatar Jun 13 '19 08:06 myprelude

function capitalize(str) { const camelizeRE = /(\w)/g return str.replace(camelizeRE, (, c) => c? c.toUpperCase():'') }

abin-jb avatar Jun 13 '19 12:06 abin-jb

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____

Damon99999 avatar Jun 18 '19 03:06 Damon99999

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]

khhh97 avatar Jun 30 '19 07:06 khhh97

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);
}

xuxusheng avatar Jul 01 '19 10:07 xuxusheng

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"));

Konata9 avatar Jul 01 '19 15:07 Konata9

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(''); }

TKBnice avatar Jul 01 '19 16:07 TKBnice

	function func(str){
		return str.replace(/(_)([a-z])/g,function(rs){ 
			 return arguments[2].toUpperCase()
			 }
		)
	}

func("a_c_def")

zzccww avatar Jul 02 '19 04:07 zzccww

献丑了,通过去掉下划线和空格的方式进行实现 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)

15190408121 avatar Jul 04 '19 06:07 15190408121

(str) => str.split('_').reduce((acc, cur) => acc + cur.slice(0,1).toUpperCase() + cur.slice(1))

Makcy avatar Jul 04 '19 07:07 Makcy

var resstr = "";
"html___accc_ddddd".split('_').forEach(element => {
    if (element)
        resstr += element[0].toUpperCase() + element.substring(1, element.length);
})
console.log(resstr)

richard1015 avatar Jul 05 '19 02:07 richard1015

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__')

Azathoth-H avatar Jul 12 '19 06:07 Azathoth-H

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));

不太明白那些写那么复杂的有啥用???笔试题会让你写这么复杂的,越短小易懂越好; 哈哈,开个玩笑,你们写的好秀,面试官会眼前一亮,牛逼

seho-dev avatar Jul 14 '19 05:07 seho-dev

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

shufangyi avatar Jul 18 '19 02:07 shufangyi

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(""); }

NicholasBaiYa avatar Jul 19 '19 02:07 NicholasBaiYa

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; }

wyx2014 avatar Jul 24 '19 08:07 wyx2014

function toCamelCase(str) {
  return str.replace(/_(\w)/g, function(m, $1) {
    return $1 ? $1.toUpperCase() : m
  })
}

toCamelCase('_a_b_c__')

gu-xionghong avatar Jul 25 '19 08:07 gu-xionghong

function snakeToCamel ( string = `` ) {
  return string.replace( /\u005f([\u0061-\u007a])/gu, ( match, char ) => char.toUpperCase() );
}

IanSun avatar Jul 26 '19 07:07 IanSun


// 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

wsb260 avatar Jul 31 '19 02:07 wsb260

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")

tigermmmmm avatar Jul 31 '19 08:07 tigermmmmm

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)

hc951221 avatar Aug 06 '19 10:08 hc951221