JS:在类型的第n个字符后删除字符串的结尾

时间:2018-08-15 09:02:31

标签: javascript

我正在尝试编写一个脚本,以在用户插入许多特殊字符后删除字符串的结尾。

一个例子是:从第三个逗号(包括第三个逗号)中删除字符串的结尾,所以:

// Hi, this, sentence, has, a, lot, of commas

将成为:

// Hi, this, sentence

我无法使用indexOf()完成此操作,因为我不知道句子中第三个逗号将出现在何处,并且我不想使用split,因为那样会在每个逗号处产生一个中断。

2 个答案:

答案 0 :(得分:2)

您可以使用split / slice / join来获取字符串的所需部分:

const str = "Hi, this, sentence, has, a, lot, of commas";
const parts = str.split(",");
const firstThree = parts.slice(0,3);
const result = firstThree.join(",");

console.log(result, parts, firstThree);

单线的是:

const result = str.split(",").slice(0,3).join(",");

另一个简单的选项是正则表达式:

const str = "Hi, this, sentence, has, a, lot, of commas";
const match = str.match(/([^,]+,){3}/)[0]; // "Hi, this, sentence,"
console.log(match.slice(0, -1));

此代码使用slice的字符串变体。

这是正则表达式的工作方式:

  • 在捕获组()中,
  • 找到至少一个不是逗号(+)的字符([^,]):[^,]+
  • 后跟逗号,
  • 现在彼此给我三个这样的组{3}

答案 1 :(得分:0)

您可以使用以下正则表达式获取结果

const str = 'Hi, this, sentence, has, a, lot, of commas';
const m = str.match(/^(?:[^,]*,){2}([^,]*)/)[0];
console.log(m);