问题描述
var value = '1 552 222'; var searchText = '22' if (value.includes(searchText)) { console.log(value.search(searchText)) //6 console.log(value.indexOf(searchText)) //6 }
这里都打印 6,但实际索引应该是 4,因为 2 的第一次出现在第二组数字 (552) 中。
任何帮助将非常感激。
1楼
ziggy wiggy
0
2019-02-25 12:28:01
因此,您想搜索字符串,就好像空格或特殊字符不存在一样,但您希望给出索引,就好像它们确实存在一样。
为此,您需要实现自己的搜索算法。
const value = '1 552 222'; const searchText = '22'; const excludes = ' @!#'; // the characters to exclude (including spaces) console.log(getIndex(value, searchText)); function getIndex(str, search) { return search ? str.split("").findIndex((c, i) => c === search[0] && clean(str.slice(i), excludes).startsWith(search) ) : 0; } function clean(str, toRemove) { return str.split("") .filter(c => !toRemove.includes(c)) .join(""); }
2楼
Nazim Mustafa Joli
0
2019-02-25 12:52:13
var value = '1 552 222'; var i = 0, strLength = value.length; for(i; i < strLength; i++) { strLength = value.replace(/\\s/g,''); } var y=strLength.indexOf('22'); console.log(y);