如何在切片后的下一个“:”之后获取子字符串

How to get substring after next ':' after a slice?

本文关键字:之后 获取 字符串 下一个 切片      更新时间:2023-09-26

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

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';

我会使用正则表达式:

// 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);

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);