非常基本,但我担心我忽略了一个简单的解决方案。我有以下字符串... IBAN: NL56INGB06716xxxxx ...
我需要帐号,所以我正在寻找indexOf("IBAN: ")
,但现在我需要在该索引之后找到下一个空格/空白字符。
我真的不认为我需要一个循环,但它是我能想到的最好的。正则表达式捕获组可能更好?我该怎么做?
答案 0 :(得分:2)
来自MDN String.prototype.indexOf
str.indexOf(searchValue[, fromIndex])
fromIndex
可选。调用字符串中用于开始搜索的位置。它可以是任何整数。默认值为0
。
n.b。 .indexOf
只会查找特定的子字符串,如果要从多个字符中选择,您需要循环并比较或使用 RegExp
亲切的榜样
var haystack = 'foo_ _IBAN: Bar _ _';
var needle = 'IBAN: ',
i = haystack.indexOf(needle),
j;
if (i === -1) {
// no match, do something special
console.warn('One cannot simply find a needle in a haystack');
}
j = haystack.indexOf(' ', i + needle.length);
// now we have both matches, we can do something fancy
if (j === -1) {
j = haystack.length; // no match, set to end?
}
haystack.slice(i + needle.length, j); // "Bar"
答案 1 :(得分:1)
虽然你可以像Paul建议的那样传递一个起始索引,但似乎简单的正则表达式可能更容易。
var re = /IBAN:\s*(\S+)/
捕获组将在IBAN:
var match = re.exec(my_str)
if (match) {
console.log(match[1]);
}