【问题标题】:Javascript nth occurance of a string and extract the sub string upto thatJavascript第n次出现字符串并提取子字符串
【发布时间】:2016-07-25 01:00:07
【问题描述】:

假设我有一个这样的字符串

var str = 'E2*2001/116*0364*31'

我想要的是在字符串中找到第 3 次出现的 * 并从头开始打印。

所以结果是E2*2001/116*0364*

我尝试过类似jsfiddle

对应代码

var str = 'E2*2001/116*0364*31',
delimiter = '*',
start = 0,
var pos=getPosition(str, *, 3);
alert(pos);
tokens = str.substring(start, getPosition(str,*,3)),
result = tokens;


document.body.innerHTML = result;


function getPosition(str, m, i) {
   return str.split(m, i).join(m).length;
}

但无法得到输出。

谁能帮忙。

【问题讨论】:

标签: javascript string


【解决方案1】:

试试这个。

str.split('*').slice(0,3).join('*') + '*';

【讨论】:

    【解决方案2】:
    var str = 'E2*2001/116*0364*31';
    console.log(str.match(/^([^*]*\*){3}/)[0]);              // E2*2001/116*0364*
    console.log(str.match(/^([^*]*\*){3}/)[0].slice(0, -1)); // E2*2001/116*0364
    

    【讨论】:

    • 它没有给我最后的*
    • @Neel,问题中的代码都不是。如果您需要最后一个*,只需删除.slice(0, -1)
    • @JonathanBrooks,已修复。
    • 可能需要提一下这个解决方案需要regex
    • @Reddy,从代码中的正则表达式文字中看不清楚吗?
    【解决方案3】:

    String#replace的解决方案:

    var string = 'E2*2001/116*0364*31'.replace(/([^*]+\*){3}/, '');
    document.write('<pre>' + JSON.stringify(string, 0, 4) + '</pre>');

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2021-02-10
      • 2010-12-25
      • 2016-05-07
      • 1970-01-01
      • 2021-04-07
      • 2014-08-08
      • 1970-01-01
      相关资源
      最近更新 更多