如何在切片后的下一个':'之后获取子串?

时间:2015-02-02 21:56:02

标签: javascript

我有一个看起来像这样的字符串:

var string = 'foo:bar:1234:something:4321';

我希望在bar:之后将该部分返回到下一个:。在这种情况下,我想要“1234”。尺寸可以变化。

这是我的开始,但我不确定如何指定结尾。

var newString = string.slice('bar:'.indexOf(), <HOW TO SPECIFY THE END?>);

修改

字符串也可以包含更多的值和冒号,所以这些也是可能的:

var string = 'fu:bu:foo:bar:1234:something:4321';
var string = 'bar:1234:something:4321';

2 个答案:

答案 0 :(得分:2)

我使用正则表达式:

// catch `bar:` at the beginning of the string, or
// :bar: elsewhere
var matches = string.match(/(?:^|:)bar:([^:]+):/);

var newString = matches[1];

var string = 'foo:bar:1234:something:4321';

var matches = string.match(/(?:^|:)bar:([^:]+):/);

var newString = matches[1];

console.log(newString);

string = 'bar:1234:something:4321';

console.log(newString);

答案 1 :(得分:0)

function getBarValue(str) {
    var splitString = str.split('bar:'); // make this `:bar:` if foobar: is an issue

    if (splitString.length < 2) {
        return null; // "bar:" does not exist in string
    }

    return splitString[1].substring(0, splitString[1].indexOf(':'));
}

var barVal = getBarValue('foo:bar:1234:something:4321');
console.log(barVal);