3 回答

TA貢獻1942條經驗 獲得超3個贊
或者,您可以使用字符串。分裂()
const myString = '3rd Floor Empire State Building';
const certainString = ' Floor ';
let before = myString.split(certainString)[0];
let after = myString.split(certainString)[1];
console.log(before);
console.log(after);
如果區分大小寫是一個問題,我們可以在比較之前將它們轉換為小寫(或大寫)。檢查下面的代碼段:
const myString = '3rd Floor Empire State Building';
const certainWord = ' Floor ';
//----------------------------------------------
const lowerMyString = myString.toLowerCase();
const lowerCertainWord = certainWord.toLowerCase();
const beforeEndIndex = lowerMyString.indexOf(lowerCertainWord);
const afterStartIndex = beforeEndIndex + lowerCertainWord.length;
const before = myString.slice(0, beforeEndIndex);
const after = myString.slice(afterStartIndex, myString.length);
//----------------------------------------------
console.log(before);
console.log(after);

TA貢獻1853條經驗 獲得超18個贊
使用正則表達式:
https://regex101.com/r/a3WlFM/2
const re = /([\s\S]*?)(?:\s+)floor(?:\s+)([\w+ \.\,\?\!]*)/gim
const str = `3rd Floor Empire State Building
13th Floor Burj Khalifa
2nd floor Chrysler Building
4th flOor Big Ben
3rd Floor floortech building`
match = re.exec(str);
while (match != null) {
// matched text: match[0]
// match start: match.index
// capturing group n: match[n]
console.log(match[1],"-",match[2])
match = re.exec(str);
}
或者沒有正則表達式
const myString = '3rd Floor Empire State Building'
const startPos = myString.toLowerCase().indexOf(" floor ")
console.log("Floor:",myString.slice(0,startPos),"Address:",myString.slice(startPos+7))

TA貢獻1829條經驗 獲得超7個贊
在第一個示例中,您沒有在前瞻中包括地板之前的空間。
您更新的模式將是.+?(?= floor)
See a regex demo
如果要匹配這兩個部分,可以使用 2 個捕獲組并從匹配非空白字符開始,\S
以防止出現空字符串。
用于/i
不區分大小寫的匹配,如果/g
需要,則用于獲取所有匹配項。
/(\S.*?) floor (\S.*)/gi
模式將匹配
(\S.*?)
捕獲組 1,匹配非空白字符任何非貪婪字符floor
被空間包圍的比賽地板(\S.*)
捕獲組 2,匹配空白字符和行的其余部分
const regex = /(\S.*?) floor (\S.*)/gi;
const str = `13th Floor Burj Khalifa
2nd floor Chrysler Building
4th flOor Big Ben
3rd Floor Empire State Building
floor `;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
console.log(m[1]);
console.log(m[2]);
console.log("\n");
}
添加回答
舉報