我想将大写的字符串转换为带有下划线的字符串:
- "blablaBlabla" to "blabla_blabla"
- "firstName" to "first_name"
相反:
- "blabla_blabla" to "blablaBlabla"
- "first_Name" to "firstName"
我使用Typescript,但是我认为与Javascript没有区别。
先谢谢了。
杰里米。
答案 0 :(得分:2)
您可以使用[A-Z]
来获得所有大写字母,而_ + m.toLowerCase()
可以得到replace
匹配项
要以其他方式更改它,请将所有_([a-z])
匹配以将字母分配到捕获组。然后在捕获上使用toUpperCase
function trasnform1(str) {
return str.replace(/[A-Z]/g, (m) => '_' + m.toLowerCase())
}
function trasnform2(str) {
return str.replace(/_([a-z])/g, (m, p1) => p1.toUpperCase())
}
console.log(trasnform1("blablaBlabla"))
console.log(trasnform1("firstName"))
console.log(trasnform2("blabla_blabla"))
console.log(trasnform2("first_name"))
答案 1 :(得分:1)
let word = "firstName";
let output = "";
// for conversion
for (let i = 0; i < word.length; i++) {
if (word[i] === word[i].toUpperCase()) {
output += "_" + word[i].toLowerCase();
} else {
output += word[i];
}
}
console.log(output);
let source = output;
output = "";
//for reversion
for (let i = 0; i < source.length; i++) {
if (source[i] === "_") {
i++;
output += source[i].toUpperCase();
} else {
output += source[i];
}
}
console.log(output);
答案 2 :(得分:0)
要以特定的方式格式化字符串,您可以创建自定义的javascript函数,也可以使用this之类的库。
对于第一种情况,您可以使用函数snakeCase
。
对于第二种情况,您可以使用函数pascalCase
有关更多信息,您可以直接检查上面的链接并查看所有方法。
答案 3 :(得分:0)
// Camel to snake and snake to camel case
function changeCasing(input) {
if (!input) {
return '';
}
if (input.indexOf('_') > -1) {
const regex = new RegExp('_.', 'gm');
return input.replace(regex, (match) => {
const char = match.replace("_", "");
return char.toUpperCase();
});
} else {
const regex = new RegExp('[A-Z]', 'gm');
return input.replace(regex, (match) => {
return `_${match.toLowerCase()}`;
});
}
}