我正在尝试编写一个脚本,以在用户插入许多特殊字符后删除字符串的结尾。
一个例子是:从第三个逗号(包括第三个逗号)中删除字符串的结尾,所以:
// Hi, this, sentence, has, a, lot, of commas
将成为:
// Hi, this, sentence
我无法使用indexOf()完成此操作,因为我不知道句子中第三个逗号将出现在何处,并且我不想使用split,因为那样会在每个逗号处产生一个中断。
答案 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);