在第n次出现的字符处剪切一个字符串

Ano*_*ous 45 javascript string substring slice

我想要做的是获取一个字符串,this.those.that并从第n次出现的字符中获取子字符串.所以,从字符串的开头到第二次出现.就会返回this.those.同样,从第二次出现.到字符串结尾将返回that.对不起,如果我的问题有雾,那就不容易解释了.另外,请不要建议制作额外的变量,结果将是字符串而不是数组.

ale*_*lex 79

你可以在没有数组的情况下完成它,但它需要更多代码并且可读性更低.

通常,您只想使用尽可能多的代码来完成工作,这也增加了可读性.如果您发现此任务正在成为性能问题(基准测试),那么您可以决定开始重构性能.

var str = 'this.those.that',
    delimiter = '.',
    start = 1,
    tokens = str.split(delimiter).slice(start),
    result = tokens.join(delimiter); // those.that
    
console.log(result)

// To get the substring BEFORE the nth occurence
var tokens2 = str.split(delimiter).slice(0, start),
    result2 = tokens2.join(delimiter); // this

console.log(result2)
Run Code Online (Sandbox Code Playgroud)

jsFiddle.

  • 要获得"this.those"和"that",请将slice(start)更改为slice(0,start) (4认同)
  • 我以为结果应该是“ this.those”和“ that”? (2认同)
  • 通过在 split 中使用可选的限制参数更短: result = str.split(delimiter, start+1).join(delimiter) (2认同)

小智 10

尝试这个 :

"qwe.fs.xczv.xcv.xcv.x".replace(/([^\.]*\.){3}/, '');
"xcv.xcv.x"
Run Code Online (Sandbox Code Playgroud)

"qwe.fs.xczv.xcv.xcv.x".replace(/([^\.]*\.){**nth**}/, ''); - 其中 nth 是要删除的出现次数。