问题描述
var text = "welcome-to-a-New-day";
toPascalCase(text); // "WelcomeToANewDAY"
toCamelCase(text); // "WelcomeToANewDAY"
我如何将其转换为PascalCase
和camelCase
?
1楼
完全兼容ES5的方法是,使用此简单的正则表达式/-\\w/g
查找所有短划线,后跟字母数字字符。
然后只需删除破折号和大写字符即可。
对于pascal情况,也可以通过使用^\\w|-\\w
检查字符串中的第一个字符来实现。
其余部分相同。
以下是几个示例:
console.log(toCamelCase("welcome-to-a-New-day")); console.log(toPascalCase("welcome-to-a-New-day")); console.log(toCamelCase("bsd-asd-csd")); console.log(toPascalCase("bsd-asd-csd")); function toCamelCase(text) { return text.replace(/-\\w/g, clearAndUpper); } function toPascalCase(text) { return text.replace(/(^\\w|-\\w)/g, clearAndUpper); } function clearAndUpper(text) { return text.replace(/-/, "").toUpperCase(); }
2楼
您可以使用replace
和RegExp
let string = "welcome-to-a-New-day" function toPascalCase(str){ let arr = str.split('-'); let last = arr[arr.length - 1]; str = str.replace(/-\\w/g,(x) => `${x[1].toUpperCase()}`) str = str[0].toUpperCase() + str.substring(1,str.length - last.length) + last.toUpperCase(); return str; } function toCamelCase(str){ return str.replace(/-\\w/g,(x) => `${x[1].toUpperCase()}`) } console.log(toPascalCase(string)) console.log(toCamelCase(string))
3楼
这是一种使用和正则表达式的方法:
const camelCase = str => str.replace(/\\s*-\\s*\\w/g, parts => parts[parts.length-1].toUpperCase()); const pascalCase = str => camelCase(str).replace(/^\\w/, s => s.toUpperCase()); const cases = str => ({ pascal: pascalCase(str), camel: camelCase(str) }); console.log(cases('welcome-to-a-New-day')); console.log(cases('welcome -to-a- New - day'));
4楼
const myString = 'welcome-to-a-New-day'; function capitalize(string) { // take first character, uppercase it // add the rest of the string return string.charAt(0).toUpperCase() + string.slice(1); } function pascalize (string) { // splitting words by dash const words = string.split('-') // use capitalize function to capitalize every word const capitalized = words.map(word => capitalize(word)) // glue up words with .join() return capitalized.join('') } function camelize (string) { // splitting words by dash const words = string.split('-') // use capitalize function to capitalize every but first word const capitalized = words.map((word, index) => { if (index === 0) return word return capitalize(word) }) // glue up words with .join() return capitalized.join('') } console.log(pascalize(myString)) console.log(camelize(myString))
5楼
你去
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
function getPascalFromSnake(input){
return input.split("-").map(capitalizeFirstLetter).join("")
}
function getCamelFromSnake(input){
var toReturn = getPascalFromSnake(input);
return toReturn.charAt(0).toLowerCase() + toReturn.slice(1);
}
6楼
function getCase(str) {
let arr= str.split("-");
return arr.reduce((acc, word,i)=>{
let lower = word.toLowerCase(),
cap = lower.slice(0,1).toUpperCase() + lower.slice(1);
return {
camel: i === 0 ? lower : acc.camel + cap,
pascal: acc.pascal + cap
}
},{camel:"",pascal:""})
}