我想获取Pascal字符串输入,并用连字符分隔。
"HelloWorld" becomes "hello-world"
我能够做到这一点没问题,但是当有人提供以下信息时,我的正则表达式尝试开始崩溃:
"FAQ" becomes "f-a-q"
我希望它将FAQ保留为“常见问题”,所以我认为我需要将所有字符串的首字母小写与大写正确地分开吗?
我的正则表达式现在是:
name.split(/(?=[A-Z])/).join('-').toLowerCase()
答案 0 :(得分:1)
您可以替换中间的开头大写字母。
function hyphenate(string) {
return string.replace(/[^A-Z](?=[A-Z])/g, '$&-').toLowerCase();
}
console.log(hyphenate("FAQ")); // faq
console.log(hyphenate("ReadTheFAQ")); // read-the-faq
console.log(hyphenate("HelloWorld")); // hello-world