我想使用TypeScript将蛇形命名法字符串转换为驼峰命名法。例如:item_name
转换为 itemName
,Unit_Price
转换为 unitPrice
我想使用TypeScript将蛇形命名法字符串转换为驼峰命名法。例如:item_name
转换为 itemName
,Unit_Price
转换为 unitPrice
const snakeCaseToCamelCase = input =>
input
.split("_")
.reduce(
(res, word, i) =>
i === 0
? word.toLowerCase()
: `${res}${word.charAt(0).toUpperCase()}${word
.substr(1)
.toLowerCase()}`,
""
);
如果要将蛇形命名法转换为驼峰命名法,请使用以下代码:keysToCamel({ 你的对象 })
keysToCamel(o: unknown): unknown {
if (o === Object(o) && !Array.isArray(o) && typeof o !== 'function') {
const n = {};
Object.keys(o).forEach((k) => {
n[this.toCamel(k)] = this.keysToCamel(o[k]);
});
return n;
} else if (Array.isArray(o)) {
return o.map((i) => {
return this.keysToCamel(i);
});
}
return o;
}
toCamel(s: string): string {
return s.replace(/([-_][a-z])/gi, ($1) => {
return $1.toUpperCase().replace('-', '').replace('_', '');
});
}
如果要将驼峰命名法转换为下划线命名法,请使用 keysToSnake({你的对象})
keysToSnake(o: unknown): unknown {
if (o === Object(o) && !Array.isArray(o) && typeof o !== 'function') {
const n = {};
Object.keys(o).forEach((k) => {
n[this.toSnake(k)] = this.keysToSnake(o[k]);
});
return n;
} else if (Array.isArray(o)) {
return o.map((i) => {
return this.keysToSnake(i);
});
}
return o;
}
toSnake(s: string): string {
return s.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
}
我已经通过以下代码解决了这个问题。但是我正在寻找另一个更好的解决方案。
let userOutPut = '';
function snakeCaseToCamelCase(userInput: string) {
const userInputSplit = userInput.split('_');
let x = 0;
for (const prm of userInputSplit) {
if (x === 0) {
userOutPut = prm.toLowerCase();
} else {
userOutPut += prm.substr(0, 1).toUpperCase() + prm.substr(1).toLowerCase();
}
x++;
}
return userOutPut;
}
// Calling method
console.log(snakeCaseToCamelCase("item_name"));