如何将驼峰式字符串转换为 JavaScript 中的破折号?
How to convert a camel-case string to dashes in JavaScript?
我想转换这些字符串:
fooBar
FooBar
进入:
foo-bar
-foo-bar
我如何以 JavaScript 对任何给定字符串最优雅和最高效的方式做到这一点?
编辑
简单案例:
"fooBar".replace( /([a-z])([A-Z])/g, '-' ).toLowerCase();
"FooBar".replace( /([a-z])([A-Z])/g, '-' ).toLowerCase();
边缘情况:这可能会导致您只有一个字符的极端情况。
"FooBarAFooBar".replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`)
您可以将 replace
与正则表达式一起使用,例如:
let dashed = camel.replace(/[A-Z]/g, m => "-" + m.toLowerCase());
匹配所有大写字母并将它们替换为前面有 "-"
.
的小写字母
示例:
console.log("fooBar".replace(/[A-Z]/g, m => "-" + m.toLowerCase()));
console.log("FooBar".replace(/[A-Z]/g, m => "-" + m.toLowerCase()));
您可以使用 underscore.string 库中的 https://github.com/epeli/underscore.string#dasherizestring--string。
您可以将 replace()
与正则表达式一起使用。然后使用 toLowerCase()
let camel = (s) => s.replace(/[A-Z]/g, '-$&').toLowerCase()
console.log(camel('fooBar'))
console.log(camel('FooBar'))
`
您可以使用
const makeItDashed = camelCased => {
let dashed = ``
camelCased.split(``).map(ch => {{dashed += ch.toUpperCase() == ch ? `-${ch.toLowerCase()}` : ch}})
return dashed
}
console.log(makeItDashed(`fooBar`))
console.log(makeItDashed(`FooBar`))
也许你可以使用来自 lodash 的 kebabCase
:https://lodash.com/docs/4.17.15#kebabCase
对于那些不需要前面连字符的人:
console.log ("CamelCase".replace(/[A-Z]/g, (match, offset) => (offset > 0 ? '-' : '') + match.toLowerCase()))
我想转换这些字符串:
fooBar
FooBar
进入:
foo-bar
-foo-bar
我如何以 JavaScript 对任何给定字符串最优雅和最高效的方式做到这一点?
编辑
简单案例:
"fooBar".replace( /([a-z])([A-Z])/g, '-' ).toLowerCase();
"FooBar".replace( /([a-z])([A-Z])/g, '-' ).toLowerCase();
边缘情况:这可能会导致您只有一个字符的极端情况。
"FooBarAFooBar".replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`)
您可以将 replace
与正则表达式一起使用,例如:
let dashed = camel.replace(/[A-Z]/g, m => "-" + m.toLowerCase());
匹配所有大写字母并将它们替换为前面有 "-"
.
示例:
console.log("fooBar".replace(/[A-Z]/g, m => "-" + m.toLowerCase()));
console.log("FooBar".replace(/[A-Z]/g, m => "-" + m.toLowerCase()));
您可以使用 underscore.string 库中的 https://github.com/epeli/underscore.string#dasherizestring--string。
您可以将 replace()
与正则表达式一起使用。然后使用 toLowerCase()
let camel = (s) => s.replace(/[A-Z]/g, '-$&').toLowerCase()
console.log(camel('fooBar'))
console.log(camel('FooBar'))
`
您可以使用
const makeItDashed = camelCased => {
let dashed = ``
camelCased.split(``).map(ch => {{dashed += ch.toUpperCase() == ch ? `-${ch.toLowerCase()}` : ch}})
return dashed
}
console.log(makeItDashed(`fooBar`))
console.log(makeItDashed(`FooBar`))
也许你可以使用来自 lodash 的 kebabCase
:https://lodash.com/docs/4.17.15#kebabCase
对于那些不需要前面连字符的人:
console.log ("CamelCase".replace(/[A-Z]/g, (match, offset) => (offset > 0 ? '-' : '') + match.toLowerCase()))