为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2021-12-23 10:18:19
我想拆分以下两个字符串,并将索引号放在每个字符串的末尾,并带有.(点)。let str1 = "1. sun ; moon ; star ; god ; goddess";// will work with both the stringlet 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 个单词等等......
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以通过在添加回来之前从字符串中删除列表编号来实现这一点。这是一个例子:


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);


查看完整回答
反对 回复 2021-12-23
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

我们可以拆分正则表达式/\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);


查看完整回答
反对 回复 2021-12-23
  • 2 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信