如何在每个拆分的字符串中拆分和插入数字(javascript)?

我想拆分以下两个字符串,并将索引号放在每个字符串的末尾,并带有.(点)。


let str1 = "1. sun ; moon ; star ; god ; goddess";


// will work with both the string


let str2 = "sun; moon; star; god; goddess;";

结果应该是这样的


let result = "1. sun\n2. moon\n3. star\n4. god\n5. goddess.";

或者如下所示,如果执行


1. sun.

2. moon.

3. star.

4. god.

5. goddess.

更新:我将其拆分但未能将索引号放入每个单词中。由于单词是随机的,例如一个可以有 3 个单词,另一个可以有 5 个单词等等......


PIPIONE
浏览 162回答 2
2回答

Cats萌萌

您可以通过在添加回来之前从字符串中删除列表编号来实现这一点。这是一个例子:const formatList = list => {  list = list    // split the string    .split(';')    // filter out empty list items    .filter(Boolean)    // Iterate over the list items to format them    .map((item, index) => {      // Start with the index (+1 one to start from 1)      return (index + 1)        // Add the dot and the space        +        '. '        // Add the list item without any number+dot substring and any extra space        +        item.replace(/\d+\./g, '').trim()        // Add a final dot (even if list should not usually have ending dots)        +        '.'    })    // Join back the list items with a newline between each    .join('\n');  return list;};let str1 = "1. sun ; moon ; star ; god ; goddess";let str2 = "sun; moon; star; god; goddess;";let result = "1. sun.\n2. moon.\n3. star.\n4. god.\n5. goddess.";console.log(formatList(str1), formatList(str1) === result);console.log(formatList(str2), formatList(str2) === result);

一只名叫tom的猫

我们可以拆分正则表达式/\s*;\s*/g,然后处理map函数中列表项上可能已经存在该数字的可能性,就像第一个示例中的情况一样。let str1 = "1. sun ; a moon ; star ; god ; goddess ; ";const result = str1.split(/\s*;\s*/g)  .filter(Boolean)  .map((e, i) => `${/^\d+\./.test(e) ? "" : i + 1 + ". "}${e}.`)  .join("\n");console.log(result);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java