我有几行文字作为一个变量:
AAbcd
bAAcd
bcAAd
cbAAd
AbcdA
Abccd
OR
var str = "AAbcd\nbAAcd\nbcAAd\ncbAAd\nAbcdA\nAbccd"
我想得到两条线,其中“AA”出现在它们各自行的相同索引中,只要这些行是并发的。
第一行AAbcd
的索引与第二行bAAcd
不同,但不匹配。
第3行和第4行(bcAAd
和cbAAd
)匹配,因为它们都从索引2开始并且是并发的。
这可以使用单个RegExp,还是需要javascript解决方法?
澄清
var i = RegExp(?).exec(str)
的回复将是“AAd \ ncbAA”,我真的只对这个字符串的索引感兴趣,当然这将是i.index
。
答案 0 :(得分:1)
以下是您问题的解决方案:
function findWithSameIndex(strings, toFind) {
var results = {};
for(var i = 0, length = strings.length; i !== length; i++) {
var index = strings[i].search(toFind);
if(index !== -1) {
if(results[index] !== undefined) {
return [results[index], i];
} else {
results[index] = i;
}
}
}
return null;
};
使用此功能,您可以执行所需的操作:
var strings = ["AAbcd", "bAAcd", "bcAAd", "cbAAd", "AbcdA", "Abccd"];
// two A in sequence
findWithSameIndex(strings, "AA");
// two characters in sequence
findWithSameIndex(strings, /(.)\1/);
我希望这会对你有所帮助。