javascript 正则表达式在每个单词后拆分字符串

pes8fvy9  于 12个月前  发布在  Java
关注(0)|答案(3)|浏览(103)

编写此字符串以一次匹配所有测试字符串。

String="AQuickBrown_fox jump over the-lazy-Dog";

基本上,我想让这些字符串看起来像这样:

"a-quick-brown-fox-jump-over-the-lazy-dog"

我在string* 上尝试了split("/regex/")函数 *,在返回的数组 * 上应用了join("-")函数 *,并应用了.toLowerCase()。但我找不到解决办法。我想知道可以拆分单词的正则表达式,这样我就可以得到所需的字符串。

pxq42qpu

pxq42qpu1#

为了可读性,我更喜欢多个替换
我会偷来这个烤肉串的名字

const kebabCase = (str) => str
    // Camelcase - handle single letters too
    .replace(/([a-z])([A-Z])|([A-Z])([A-Z][a-z])/g, '$1$3-$2$4') 
    // non-alphanumeric characters and spaces
    .replace(/[^a-z0-9]+/gi, '-')
    // lowercase and trim dashes
    .toLowerCase().replace(/^-|-$/g, '');

const inputString = "AQuickBrown_fox jump over the-lazy-Dog";
const outputString = kebabCase(inputString);
console.log(outputString);  // "a-quick-brown-fox-jump-over-the-lazy-dog"
ca1c2owp

ca1c2owp2#

https://www.geeksforgeeks.org/how-to-convert-a-string-into-kebab-case-using-javascript/
这将检查空格、大写字母和下划线。它创建一个数组并推送分隔字符串的单词。现在使用join()连接带有连字符的数组。然后将整个字符串转换为小写。

const kebabCase = str => str
    .match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)
    .join('-')
    .toLowerCase();

console.log(kebabCase('Geeks For Geeks'));
console.log(kebabCase('GeeksForGeeks'));
console.log(kebabCase('Geeks_For_Geeks'));
console.log(kebabCase('AQuickBrown_fox jump over the-lazy-Dog'));
qxgroojn

qxgroojn3#

下面是一个使用replace函数的解决方案:

const toKebab = text => text.replace(/[\W_]+|(?<=[A-z])(?=[A-Z])/g, '-').toLowerCase();

console.log(toKebab('AQuickBrown_fox jump over the-lazy-Dog'));

相关问题