簡體   English   中英

JavaScript indexOf 忽略大小寫

[英]JavaScript indexOf to ignore Case

我正在嘗試查找圖像的源名稱中是否有noPic可以是大寫或小寫。

var noPic = largeSrc.indexOf("nopic");

我應該寫:

var noPic = largeSrc.toLowerCase().indexOf("nopic");

但是這個解決方案不起作用......

您可以將正則表達式與不區分大小寫的修飾符一起使用 - 誠然不一定像 indexOf 那樣快。

var noPic = largeSrc.search(/nopic/i);

不,沒有不區分大小寫的方式來調用該函數。 您的第二個示例不起作用的原因可能是因為您缺少對text()函數的調用。

嘗試這個:

var search = "nopic";
var noPic = largeSrc.text().toLowerCase().indexOf(search.toLowerCase());

請注意,如果搜索字符串來自用戶輸入,您需要轉義特殊的正則表達式字符。

這是它的樣子:

var search = getUserInput();

/* case-insensitive search takes around 2 times more than simple indexOf() */
var regex = RegExp(search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), "i");

var noPic = testString.search(regex);

查看更新的 jsperf:http: //jsperf.com/regex-vs-tolowercase-then-regex/4

腳注:從https://stackoverflow.com/a/3561711/1333402轉義的正則表達式

嘗試:

var lowerCaseLargeSrc = largeSrc.toLowerCase();
var noPic = lowerCaseLargeSrc.indexOf("nopic");

僅當 largeSrc 已經是字符串時,您的代碼才有效。 您可能會收到一個 html 元素的輸入。 因此,使用 jQuery 將任何潛在的輸入元素解析為其中的文本。 例子:

var noPic = largeSrc.text().toLowerCase().indexOf("nopic");

如何使用 findIndex 代替,這樣您就可以在回調中執行所有 toLowerCase() 。 對我來說效果很好:

// Not Supported in IE 6-11
const arr = ['HELLO', 'WORLD'];
const str = 'world';

const index = arr.findIndex(element => {
  return element.toLowerCase() === str.toLowerCase();
});

console.log(index); // 👉️ 1

if (index !== -1) {
  // 👉️ string is in the array
}

信用: https ://bobbyhadz.com/blog/javascript-make-array-indexof-case-insensitive

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM