第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
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)
var test = "my_js_is_so_poor"
var result = test.split('_').reduce((acc, cur) => acc + cur.slice(0, 1).toUpperCase() + cur.slice(1))
console.log(result)
function transformName(s) {
const arr = s.split('_');
let newS = arr.reduce((a,b) => {
b = b[0].toUpperCase() + b.slice(1);
return a + b
},'')
return newS
}
function toCamelCase(sourceString) {
if (typeof sourceString !== "string") {
return ""
}
return sourceString.split("_").reduce((previousValue, currentValue) => {
if (currentValue.length > 0) {
if (previousValue === "") {
return currentValue
} else {
let firstChar = currentValue.substr(0, 1).toUpperCase()
return previousValue + firstChar + currentValue.substring(1)
}
} else {
return previousValue
}
}, "")
}
‘get_element_by_id’.replace(/(_w)/g, a=>a[1].toUpperCase() )
function convertToCamelName(str){
return str.split('_').map(word => (word.substring(0, 1).toUpperCase() + word.substring(1))).join('');
}
convertToCamelName('aaa_bbb_ccc');
function changeLowercase(str) {
return str.replace(/(?<=_)[a-zA-Z]/g,word=>word.toUpperCase()).split('_').join('')
}
let newstr=changeLowercase('aa_bssq_ceeg')//aaBssqCeeg
// 不知道为啥代码提交后split('_')的中间那下划线不在了
function toCamel(str) {
const reg = /_+([^_])+?|(_+)/g
return ('_' + str).replace(reg, (m, $1) => ($1 || '').toUpperCase())
}
toCamel('a_b_c_de____def_____') // "ABCDeDef"
function tuofeng(str){
let t =str.split('_');
let ki=[];
ki.push(t[0]);
for (let index = 1; index < t.length; index++){
let u =[...t[index]];
u[0]=(u[0].toUpperCase());
ki.push(u.join(''));
}
return ki;
}
function lineToUpper(str) {
return str.replace(/\_(.){1}/g, (all, item) => {
return item.toUpperCase();
});
}
lineToUpper("use_info_data");
const str = 'student_name'
function lineToUpperCase(str){
const splitedStr = str.split('_')
return splitedStr[0]+splitedStr.slice(1).map(toUpperCaseFirst).join('')
}
function toUpperCaseFirst(str){
return str.substr(0,1).toUpperCase()+str.substr(1)
}
lineToUpperCase(a) //studentName
写一个方法把下划线命名转成大驼峰命名
大驼峰式:(big camel-case) 每个单词的第一个字母都大写;
``JavaScript
function bigCamelCase(str) {
const strArr = str.split('_').map(s => {
s =
${s[0].toUpperCase()}${s.slice(1)}`
return s
})
return strArr.join('')
}
console.log(bigCamelCase('a_b_came_aa'))
````
function bigCamelCase(str) {
return str.replace(/(^|\_)\w/g, match => match[match.length - 1].toUpperCase())
}
const translate = (str) => str.split('_').map(s => s.substr(0, 1).toUpperCase() + str.substr(1)).join('');
function fn(str) {
var arr = str.split('_');
for(let i = 1; i < arr.length; i++) {
let c = arr[i][0];
arr[i] = c.toUpperCase() + arr[i].substring(1);
}
return arr.join('');
}
/**
* 写一个方法把下划线命名转成大驼峰命名
* @param {String} str
*/
function transform(str) {
return str
.split("_")
.map((item, index) => index > 0 && item ? item && item[0].toLocaleUpperCase() + item.slice(1) : item)
.join("");
}
console.log(transform("_aa_bb_cc_")); // "AbBbCc"
console.log(transform("aa_bb_cc")) // "aaBbCc"
function changeStr(str){ if(str.split('_').length==1)return; str.split('_').reduce((a,b)=>{ return a+b.substr(0,1).toUpperCase() + b.substr(1) }) }
这个函数缺少返回值,应该加上个return
\w_\w
字符串,如果匹配到,说明需要进行替换,如果匹配不到,说明不需要替换_
和尾字母为 _
的不做替换function toCamel(str, isBigCamel = false) {
if (isBigCamel) {
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;
}
const toCamel = (s) => {
return s.replace(/(_[a-z])/ig, ($1) => {
return $1.toUpperCase()
.replace('_', '');
});
};
let a = "awklfjwaklfj_awijfaw_lkgjaw"
let arr = a.split('_')
arr.map((x,index)=>{
if(index!==0){
x = x.replace(x[0],x[0].toUpperCase())
}
})
let a = "awklfjwaklfj_awijfaw_lkgjaw"
let arr = a.split('_')
arr.map((x,index)=>{
if(index!==0){
x = x.replace(x[0],x[0].toUpperCase())
}
})
function convertStr(str) {
str = str.replace(/^_*|_*$/g, '');
let index = str.indexOf('_')
if (index === -1) return str
let arr = [...str]
arr.splice(index, 2, arr[index + 1].toUpperCase())
return convertStr(arr.join(''))
}
console.log(convertStr('_abc_abc_def___'))
// abcAbcDef
function strSwitch(str) {
if (typeof str !== 'string') {
return;
}
var firstIndex = str.indexOf('_');
if (firstIndex === 0) {
str = str.replace('_', '')
}
let strArr = str.split('_')
strArr = strArr.filter(d => d);
var resArr = strArr.map((item, index) => {
if (index === 0) {
return item
}
if (index > 0) {
return item.replace(item[0], item[0].toUpperCase());
}
})
console.log(resArr.join(''))
}
strSwitch('arr_dd_ddd');
/**
* @param {string} str
* @return {string}
*/
function toCamel(str) {
return str.replace(/[a-z]_([a-z])/g, (match, $1) => $1.toUpperCase());
}
function toCamelCase(val) {
return typeof val === "string"
? val
.split("_")
.map(v => v.slice(0, 1).toUpperCase() + v.slice(1))
.join("")
: false;
}
console.log(toCamelCase("_a_cde_f__")); //ACdeF
function changeName(str) {
var num = new Array();
var newname = "";
if (typeof str !== "string") {
alert("请输入字符串!");
return;
}
var mystr = str.split("_");
for (var i = 0; i < mystr.length; i++) {
var str = mystr[i];
if (str != "") {
var big = str[0].toUpperCase();
newname = newname + big + str.substring(1);
}
}
return newname;
}
function tuoFeng(val) {
let arr = val.split("_");
let newarr = [];
arr.map((item, index) => {
if (index !== 0) {
if (item[0]) {
newarr.push(item.replace(item[0], item[0].toUpperCase()));
}
}
});
newarr.unshift(arr[0].replace(arr[0][0], arr[0][0].toUpperCase()));
return newarr.join("");
}
console.log(tuoFeng("a_zeng_end"));//AZengEnd
function toCamel(str) {
return str.replace(/(w)(_)(w)/g, (match, p1, p2, p3) => ${p1}${p3.toUpperCase()}
);
}
/**
* 大驼峰: toUpperCamelCase()
* 小驼峰:toLowerCamelCase()
**/
const str = 'aa_bb_cc',
splitChar = '_'
{
function toUpperCamelCase(str, connChar) {
const strArr = str.split(connChar)
if (strArr.length === 1) return
const result = strArr.map(item => item.charAt(0).toUpperCase() + item.slice(1))
return result.join('')
}
const result = toUpperCamelCase(str, splitChar)
console.log(result)
}
{
function toLowerCamelCase(str, connChar) {
const strArr = str.split(connChar)
if (strArr.length === 1) return
const result = strArr.map((item, idx) => {
return idx ? item.charAt(0).toUpperCase() + item.slice(1) : item
})
return result.join('')
}
const result = toLowerCamelCase(str, splitChar)
console.log(result)
}
{
function toUpperCamelCase(str, connChar) {
const strArr = str.split(connChar)
if (strArr.length === 1) return
const result = strArr.reduce((acc, curr) => {
return acc + curr.substr(0, 1).toUpperCase() + curr.substr(1)
}, '')
return result
}
const result = toUpperCamelCase(str, splitChar)
console.log(result)
}
{
function toLowerCamelCase(str, connChar) {
const strArr = str.split(connChar)
if (strArr.length === 1) return
const result = strArr.reduce((acc, curr) => {
return acc + curr.substr(0, 1).toUpperCase() + curr.substr(1)
})
return result
}
const result = toLowerCamelCase(str, splitChar)
console.log(result)
}
const toUpperCamelCase = string => string.split('_').map((word,i)=>{
if(i==0) return word
else {
return word.replace(/(bw)/,RegExp.$1.toLocaleUpperCase())
}
}).join('')
toUpperCamelCase('apple_apply_append_app')
"appleApplyAppendApp"
function change(str) {
let reg = /_[a-z]{1}/g;
return str.replace(reg,(item) => {
return item.charAt(1).toUpperCase();
});
}
var name = function(str){
var arr = str.split('')
for(let i=0;i<arr.length;i++){
if(i===0){
arr[i] = arr[i].toUpperCase()
}
if(arr[i]==="_"){
arr[i+1] = arr[i+1].toUpperCase()
}
}
var temp = arr.join('')
var reg = /_+/g
var res = temp.replace(reg,'')
return res
}
console.log(name('abb_b_ca'))
第4天 写一个方法把下划线命名转成大驼峰命名
function trans(str){
var reg = /(^\w)|_(\w)/;
return str.replace(reg, function(){
if(arguments[1]) return arguments[1].toUpperCase();
else return arguments[2].toUpperCase();
})
function toPascal(s) {
return s.split('_').filter(w => w).map(w => w[0].toUpperCase() + w.slice(1)).join('');
}
console.log(toPascal('_to_pascal'));
const cases = {
camelCase: 'helloWorldEveryone',
pascalCase: 'HelloWorldEveryone',
snakeCase: 'hello_world_everyone',
kebabCase: 'hello-world-everyone',
}
const camelCase2PascalCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
// 这里未验证str是否是camelCase,直接把首字母转大写
return str.replace(/^\w/, match => match.toUpperCase())
}
// @TEST: camelCase2PascalCase
console.log('camelCase2PascalCase:', camelCase2PascalCase(cases.camelCase)) // HelloWorldEveryone
const camelCase2SnakeCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
return str.replace(/[A-Z]/g, match => `_${match.toLowerCase()}`)
}
// @TEST: camelCase2SnakeCase
console.log('camelCase2SnakeCase:', camelCase2SnakeCase(cases.camelCase)) // hello_world_everyone
const camelCase2KebabCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
return str.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)
}
// @TEST: camelCase2KebabCase
console.log('camelCase2KebabCase:', camelCase2KebabCase(cases.camelCase)) // hello-world-everyone
const pascalCase2CamelCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
return str.replace(/^\w/, match => match.toLowerCase())
}
// @TEST: pascalCase2CamelCase
console.log('pascalCase2CamelCase:', pascalCase2CamelCase(cases.pascalCase)) // helloWorldEveryone
const pascalCase2SnakeCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
// 先替换非首字母的大写字母,再替换首字母。也许有更优雅的解法?
return str
.replace(/([^A-Z])([A-Z])/g, (match, p1, p2) => `${p1}_${p2.toLowerCase()}`)
.replace(/\w/, match => match.toLowerCase())
}
// @TEST: pascalCase2SnakeCase
console.log('pascalCase2SnakeCase:', pascalCase2SnakeCase(cases.pascalCase)) // hello_world_everyone
const pascalCase2KebabCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
return str
.replace(/([^A-Z])([A-Z])/g, (match, p1, p2) => `${p1}-${p2.toLowerCase()}`)
.replace(/\w/, match => match.toLowerCase())
}
// @TEST: pascalCase2KebabCase
console.log('pascalCase2KebabCase:', pascalCase2KebabCase(cases.pascalCase)) // hello-world-everyone
const snakeCase2CamelCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
return str.replace(/_(\w)/g, (match, p1) => p1.toUpperCase())
}
// @TEST: snakeCase2CamelCase
console.log('snakeCase2CamelCase:', snakeCase2CamelCase(cases.snakeCase)) // helloWorldEveryone
const snakeCase2PacalCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
return str.replace(/(^|_)(\w)/g, (match, p1, p2) => p2.toUpperCase())
}
// @TEST: snakeCase2PacalCase
console.log('snakeCase2PacalCase:', snakeCase2PacalCase(cases.snakeCase)) // HelloWorldEveryone
const snakeCase2KebabCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
return str.replace(/_/g, '-')
}
// @TEST: snakeCase2KebabCase
console.log('snakeCase2KebabCase:', snakeCase2KebabCase(cases.snakeCase)) // hello-world-everyone
const kebabCase2CamelCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
return str.replace(/-(\w)/g, (match, p1) => p1.toUpperCase())
}
// @TEST: kebabCase2CamelCase
console.log('kebabCase2CamelCase:', kebabCase2CamelCase(cases.kebabCase)) // helloWorldEveryone
const kebabCase2PacalCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
return str.replace(/(^|-)(\w)/g, (match, p1, p2) => p2.toUpperCase())
}
// @TEST: kebabCase2PacalCase
console.log('kebabCase2PacalCase:', kebabCase2PacalCase(cases.kebabCase)) // HelloWorldEveryone
const kebabCase2SnakeCase = str => {
if (typeof str !== 'string') {
throw new TypeEroor('invalid arguments value `str`')
}
return str.replace(/-/g, '_')
}
// @TEST: kebabCase2SnakeCase
console.log('kebabCase2SnakeCase:', kebabCase2SnakeCase(cases.kebabCase)) // hello-world-everyone
本来想写一个函数,传str
,from
,to
三个参数来处理所有的case转换,没能写出来
let toCamel = (str) => {
let arr = str.split('_');
for (let i = 1; i < arr.length; i++) {
let value = arr[i];
arr[i] = value[0].toUpperCase() + value.slice(1);
}
return arr.join('');
}
console.log(toCamel('test_apply_uahy'));
(str) => {
let functionName = str.split('_').map(t => t[0].toUpperCase() + t.substr(1))
return functionName[0].toLowerCase() + functionName.substr(1)
}
function linToUp(str = 'aa_bb_cc') {
return str.split('_').map((item, index) => {
return index === 0 ? item : item[0].toUpperCase() + item.substring(1, item.length)
}).join('')
}
function Conversion(str) {
var arg = str.split('');
var index = arg.indexOf('_');
arg.splice(index, 1);
arg[index] = arg[index].toLocaleUpperCase();
return arg.join('');
}
下划线转小驼峰 大驼峰
function toCamel(str, type) {
var arr = [];
arr = str.split("");
var res = arr.map((item, index) => {
if (item === '_') {
item = "";
if (arr[index + 1]) arr[index + 1] = arr[index + 1].toLocaleUpperCase();
}
return item;
});
var resStr = res.join("");
switch (type) {
case 'small':
resStr = resStr.replace(resStr[0], resStr[0].toLocaleLowerCase());
break;
case 'big':
resStr = resStr.replace(resStr[0], resStr[0].toLocaleUpperCase());
break;
default:
throw "转换类型错误 仅限 small big"
}
return resStr;
}
console.log("小驼峰", toCamel("user_name", "small"));//小驼峰
console.log("大驼峰", toCamel("user_name", "big"));//大驼峰
function getStr(str){
return str.replace(/(\_\w)/g,function($0){
return $0[$0.length-1].toUpperCase()
})
}
//第4天 写一个方法把下划线命名转成大驼峰命名
// hello-world-vue => helloWorldVue
function capitalize(str) {
return str.charAt(0).toUpperCase() + str.substring(1);
}
function dashToCamel(str) {
var strs = str.split("-");
return strs.map(capitalize).join("");
}
var str = "hello-world-vue";
console.log(dashToCamel(str));
function camelCase(str) {
return str.trim().replace(/_{1,}([a-zA-Z]|$)/g, function (_, char) {
return char.toUpperCase();
});
}
console.log(camelCase(' _a_A__b_ '))
//第4天 写一个方法把下划线命名转成大驼峰命名 // hello-world-vue => helloWorldVue function capitalize(str) { return str.charAt(0).toUpperCase() + str.substring(1); } function dashToCamel(str) { var strs = str.split("-"); return strs.map(capitalize).join(""); } var str = "hello-world-vue"; console.log(dashToCamel(str));
function capitalize(str) {
return str.charAt(0).toUpperCase() + str.substring(1).toLowerCase();
}
function dashToCamel(str) {
var strs = str.split("-");
return strs
.map((curr, index) => {
if (index === 0) {
return curr.toLowerCase();
}
return capitalize(curr);
})
.join("");
}
var str = "hello-world-vue";
console.log(dashToCamel(str));
上面那个有一点点错
````js
function toUpperCaseFun(str) {
let strArr = str.split('_');
let newStr = '';
strArr.forEach((item, index) => {
newStr += item.substr(0, 1).toUpperCase() + item.substr(1)
})
return newStr
}
console.log(toUpperCaseFun('a_bc_def_asdasd_qweqwewq_qweqwe_zxczxc'))
function upperCase(str) {
let isMatch = false
const target = '_'
return str.split('').reduce((acc, cur) => {
if (cur === target) {
isMatch = true
return acc
}
if (isMatch) {
isMatch = false
return acc + cur.toUpperCase()
}
return acc + cur;
}, '')
}
console.log(upperCase('sd_f_s_d)f__sdf')) // "sdFSD)fSdf"
//题目是转成大驼峰,前面的同学都是转成小驼峰了
function toBigCamel(str){
const strArr=str.split('_');
const str2Arr=strArr.map((item, index)=> {
let itemArr=item.split('');
let item0 = itemArr[0].toUpperCase();
itemArr[0] = item0;
return itemArr.join('');
});
return str2Arr.join('');
}
console.log(toBigCamel('lang_test_age')) // "LangTestAge"
function trim(str){
var array=str.split("");
while(!(str.indexOf===-1)){
var num=str.indexOf("_")+1;
if(num===0) return str;
array.splice(num,1,array[num].toUpperCase());
array.splice(num-1,1);
str=array.join("");
}
}
let str = " a_c_def ";
function turn (str){
let newarr=[];
str.split('_').map(function(item){
return newarr.push(item.replace(/^\w/,function(e){
return e.toUpperCase();
}))
});
return newarr.join('');
}
document.write(turn (str));
建议定义一下什么是驼峰,以及什么是下划线写法, 大家给出的答案都功能太强了, 抹消了很多有意义的信息.
例如 ____abc
中的 ____
很有可能是需要保留的数据, 而 hello_world
才是一个规范的下划线写法.
我的示例如下, 基本原则只转换符合 hello_world
这样标准的下划线写法转到标准的驼峰写法, 如果连续输入 a_b_c
则视为期待转为驼峰均为大写, 如果下划线中包含大写, 则视为期待保留大写的同时转为驼峰:
function transfor(str) {
return str.replace(/(?<=[^_]+)_([a-z]|[A-Z])/g, (m, $1) => {
return $1.toUpperCase();
});
}
可以看到尽可能的保留了下划线的存在:
function changeLine (str) {
var arr = str.split('_');
var newStr = '';
for (var i = 0; i < arr.length; i ++) {
if (arr[i] !== "") {
newStr += arr[i].charAt(0).toUpperCase() + arr[i].slice(1)
}
}
return newStr
}
str.split('_').map(item => item.replace(/^(.)/, (match, $1) => ${$1.toUpperCase()}
)) .join('');
const toCamel = (str) => {
return str.replace(/^_+|_+$/g, '').replace(/_\S/g, ($1) => {
return $1.toUpperCase().replace(/_+/, '')
})
}
toCamel('_user_name_@zhangsan_info____****') // 'userName@zhangsanInfo****'
function transformName (str) {
return str.split('_').reduce((s, item) => {
return s + item.charAt(0).toUpperCase() + item.slice(1)
})
}
function match(str) {
if (typeof str !== 'string') {
alert('请输入字符串')
return
}
return str
.replace(/(?<=_)w/g, function(match) {
return match.toUpperCase()
})
.split('_')
.join('')
}
function toCamel(str) {
return str.replace(/(\w)_(\w)/g, function(match, $1, $2) {
return $1 + $2.toUpperCase();
});
}
function toCamel(underline) {
let arr = underline.split(/_+/).map((item, index) => {
return index === 0 ? item : item.replace(/^\w/, item.charAt(0).toUpperCase())
})
return arr.join('')
}
console.log(toCamel('aa_bb___cc_d')) //aaBbCcD
// 写一个方法 将下划线命名改成驼峰命名方法
function replaceStr(str) {
if (!str.length) {
return '';
}
let targetIndex = null;
return str.split('').map((item, index) => {
if (item === '_') {
targetIndex = Number(index) + 1;
return null;
} else if (index === targetIndex) {
return item.toUpperCase();
} else {
return item;
}
}).join('');
}
const target = 'kobe_gigi_AI';
replaceStr(target);
function toHump(a){
var strs = a.split("_");
for(i = 0;i < strs.length;i ++){
var index = strs[i].split("");
index[0] = index[0].toUpperCase();
strs[i] = index.join("");
}
a = strs.join("");
return a;
}
function strToCamelCase(str) {
return str
.split('_')
.map(item=>{
if(item === ''){
return '_'
}
return item[0].toUpperCase()+item.slice(1);
})
.join('');
}
mark
const _ToCamel = str => str.split("_")
. filter( s => !!s)
.map( (v,i) => i===0 ? v : v[0].toUpperCase() + v.slice(1)))
.join('')
我改了一下,这个没有错误了
const ToCamel = str => str.split("_")
. filter( s => !!s)
.map( (v,i) => i===0 ? v : v[0].toUpperCase() + v.slice(1))
.join('')
------------------ 原始邮件 ------------------
发件人: "xuzhouchen1104"<[email protected]>;
发送时间: 2020年4月26日(星期天) 上午10:53
收件人: "haizlin/fe-interview"<[email protected]>;
抄送: "Subscribed"<[email protected]>;
主题: Re: [haizlin/fe-interview] [js] 第4天 写一个方法把下划线命名转成大驼峰命名 (#12)
mark
const ToCamel = str => str.split("")
. filter( s => !!s)
.map( (v,i) => i===0 ? v : v[0].toUpperCase() + v.slice(1)))
.join('')
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
function toHump(str){
if(typeof str !== 'string'){
return
}
let temp = str.split('')
for(let index in temp){
if(temp[index] === '_'){
temp[index - 0 + 1] = temp[index - 0 + 1].toUpperCase()
}
}
return temp.join('').replace(/_/g, '')
}
function strToCamel(str){
return str.split('_').map(item=>item.slice(0,1).toUpperCase() + item.slice(1)).join('');
}
var strHump = (str) => str.replace(/_w/g, data => data.replace('_', '').toLocaleUpperCase())
const toCamelCase = (str='') => {
return str.split('_').map(item=>item.charAt(0).toUpperCase()+item.slice(1).toLowerCase()).join('');
};
toCamelCase('a_c_def'); // ACDef
function fn(str) {
str = str.split("_");
var newstr = str[0];
for (var i = 1; i < str.length; i++) {
str[i] = str[i].slice(0, 1).toUpperCase() + str[i].slice(1);
newstr += str[i];
}
return newstr;
}
function ToCamel(str) {
if (str.indexOf('_') == 0 || str.lastIndexOf('_') == str.length - 1) {
return str//下划线开头或结尾不处理
}
let arr = str.split('_')
arr.forEach((v, index) => {
arr[index] = v.substr(0, 1).toUpperCase() + v.substr(1)
});
result = arr.join('')
}
console.log(ToCamel('to_came_str_'))
let str = 'My_name_Is_LiLi';
function toUp(st) {
let arr = st.split('_');
return arr.map(function (item, i) {
if (!i) {
return item[0].toLowerCase() + item.slice(1);
}
else {
return item[0].toUpperCase() + item.slice(1);
};
}).join('');
}
let st = toUp(str);
function camelCase(str){
var str1;
var newstr=new Array();
str1=str.split("_");
str1.map(item=>{
if(item)
{
newstr+=item.substr(0,1).toUpperCase()+item.substr(1)
}
})
return newstr;
}
var str4=camelCase('The-Stealth-Warrior');
console.log(str4);
var str_n = "";
function get(str) {
var arr = str.split("_");
for (let i = 0; i < arr.length; i++) {
if (i == 0) {
str_n = arr[0];
} else {
arr[i] = arr[i].substr(0, 1).toUpperCase() + arr[i].substr(1);
str_n = str_n + "_" + arr[i];
}
}
return str_n;
}
function fn(str) {
if (typeof str !== 'string') return false;
return str.split('_').map((item, index) =>{
if (index > 0) {
return ${item.slice(0, 1).toUpperCase()}${item.slice(1)}
;
}
return item;
}).join('');
}
function hump(strOri) {
let str = '';
strOri.split('_').forEach((_, index) => {
if (index == 0) {
str += _;
} else {
let tmp = _.charAt(0).toUpperCase() + _.substr(1);
str += tmp;
}
});
return str;
}
hump('abc_de_fg')
啊到底在什么样的情况下会出现_a___a__cb____
这样的下划线命名,而且题目要求的是转成大驼峰,前面好多朋友写成了小驼峰命名了
大驼峰
function toPascal(str) {
return str.replace(/(^|_)([a-z])/g, (match, $1, $2) => `${$2.toUpperCase()}`)
.replace(/_/g, '');
}
console.log(toPascal("a_bc_d")); //ABcD
console.log(toPascal("a_c_def")); //ACDef
console.log(toPascal("bc_d")); //BcD
console.log(toPascal("bc___________ed")); //BcEd
console.log(toPascal("_______a__bc_d__")); //ABcD
console.log(toPascal("ac_______a_bc_d__")); //AcABcD
小驼峰
function toCamel(str) {
str = str
.replace(/(?<=_)([a-z])/g, (match, $1) => `${$1.toUpperCase()}`)
.replace(/_/g, '')
.replace(/(^[A-Z])/, (match, $1) => `${$1.toLowerCase()}`);
return str
}
console.log(toCamel("a_bc_d")); //aBcD
console.log(toCamel("a_c_d")); //aCD
console.log(toCamel("bc_d")); //bcD
console.log(toCamel("bc___________ed")); //bcEd
console.log(toCamel("_______a_bc_d__")); //aBcD
第4天 写一个方法把下划线命名转成大驼峰命名
function demoStr (str) {
let strarr = str.split('_');
let tes = strarr.map(element => {
return element.slice(0,1).toUpperCase() + element.slice(1).toLowerCase();
});
return tes.join('');
}
console.log(demoStr('my_name'))
function changeToCamel(str) {
if(typeof str !== 'string') return 'str is not a number'
return str.split('_').map(item => item[0] && item[0].toUpperCase() + item.substr(1)).join('')
}
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]
if(res[i+1]){
res[i+1]=res[i+1].toUpperCase()
}
function underlineTransformCamel(str) {
if (!(typeof str === 'string')) {
throw new Error('str must be string');
}
const arr = str.split(/_+/g);
if (arr.length > 1) {
return arr.map((item, index) => {
if (index !== 0 && item) {
return `${item.charAt(0).toLocaleUpperCase()}${item.slice(1).toLocaleLowerCase()}`;
}
return item;
}).join('');
}
return arr.join('');
}
console.log(underlineTransformHump('name'));
console.log(underlineTransformHump('__name'));
console.log(underlineTransformHump('name__'));
console.log(underlineTransformHump('__name__'));
console.log(underlineTransformHump('name_value'));
console.log(underlineTransformHump('name_value_alias'));
console.log(underlineTransformHump('name__value_alias'));
console.log(underlineTransformHump('name__VALUE_alias'));
console.log(underlineTransformHump('name__VALUE_1ALIAS234'));
line2upper = str => str.replace(/s/g,"").replace(/_{0,1}([^_])([^_]*)/g, (_,$1,$2)=>$1.toUpperCase()+$2);
function test(params) {
let str = "";
let bb = params.split("_");
for (let i = 1; i < bb.length; i++) {
str += (bb[i].substr(0, 1).toLocaleUpperCase() + bb[i].substr(1));
}
return bb[0] + str;
}
console.log(test("if_you_are_my_world"));
function transformCamelCase(name) {
return name.split('_').map((n, index) => index > 0 ? n.substr(0,1).toUpperCase() + n.substr(1) : n).join('')
}
//写一个方法把下划线命名转成大驼峰命名
function modifyTheName(str) {
let res = "";
let flag = 0;
str = str.toLowerCase();
for (c of str) {
if (c == "_") {
flag = 1;
continue;
}
if (flag > 0){
c = c.toUpperCase();
flag = 0;
}
res += c;
}
return res;
}
test = "ttt_aasDDFSdsad_Sadasd";
res = modifyTheName(test);
console.log(res);
function transformCamelCase(str) {
return str.split('_').map((item, index) => index > 0 ? item.slice(0, 1).toUpperCase() + item.slice(1) : item).join('')
}
let str = 'hahaha_ddfdf_rtrt_e'
console.log(toUpper(str))
function toUpper(str) {
if (typeof str != string) {
console.log('输入字符串')
retrun
}
let arr = str.split('_')
arr.map((item, index) => {
if (index > 0) {
let itemArr = item.split('')
itemArr[0] = itemArr[0].toUpperCase()
arr[index] = itemArr.join('')
}
})
return arr.join('')
}
/**
*
* @param {string} s
*/
const x = (s) => {
s.match(/([a-z]{1}_[a-z]{1})/g).forEach(m => {
s = s.replace(m, p => p.split('_').reduce((a, b) => (a + b.toLocaleUpperCase())))
})
return s
}
console.log(
x('a_bcd_e'), // aBcdE
x('_ab_c'), // _abC
x('process_env_dev') // processEnvDev
)
如果有错误,请大佬戳我 _(:_」∠)_
const str = 'test_name_subname'
function toCamel (str) {
return str.replace(/_\w/g, (str => str.slice(1).toUpperCase()))
}
console.log(toCamel(str));
Most helpful comment