[javascript] 대소 문자를 구분하지 않습니다

나는 다음을 가지고있다 :

if (referrer.indexOf("Ral") == -1) { ... }

내가 뭘 좋아하는 것은하는 것입니다 Ral그것이 될 수 있도록하는 것이, 사례를 구분을 RAl, rAl등 여전히 일치합니다.

그 말을 할 수있는 방법이 있나요 Ral대소 문자를 구별되어야한다는?



답변

.toLowerCase()이후에 추가하십시오 referrer. 이 방법은 문자열을 소문자 문자열로 바꿉니다. 그런 다음, 사용 .indexOf()사용 ral대신에 Ral.

if (referrer.toLowerCase().indexOf("ral") === -1) { 

정규 표현식을 사용하여 동일한 결과를 얻을 수도 있습니다 (동적 패턴을 테스트하려는 경우 특히 유용함).

if (!/Ral/i.test(referrer)) {
   //    ^i = Ignore case flag for RegExp


답변

다른 옵션은 다음과 같이 검색 방법을 사용하는 것입니다.

if (referrer.search(new RegExp("Ral", "i")) == -1) { ...

전체 문자열을 소문자로 변환하면 더 우아해 보이고 더 효율적일 수 있습니다.
함께 toLowerCase()코드 문자열을 통해 두 개의 패스를 한 번 패스를 소문자로 변환 할 전체 문자열에 다른 원하는 색인을 찾는 것입니다. 코드를
사용 RegExp하면 원하는 인덱스와 일치하는 문자열을 한 번 전달합니다.

따라서 긴 문자열의 경우 RegExp버전 을 사용하는 것이 좋습니다 (짧은 문자열의 경우이 효율성은 RegExp객체 를 생성하는 것으로 인해 발생 합니다)


답변

RegExp을 사용하십시오.

if (!/ral/i.test(referrer)) {
    ...
}

또는 다음을 사용하십시오 .toLowerCase().

if (referrer.toLowerCase().indexOf("ral") == -1)


답변

ES2016부터는 약간 더 좋고, 더 쉽고, 더 우아한 방법을 사용할 수 있습니다 (대소 문자 구분) :

if (referrer.includes("Ral")) { ... }

또는 (대소 문자 구분) :

if (referrer.toLowerCase().includes(someString.toLowerCase())) { ... }

https://dev.to/adroitcoder/includes-vs-indexof-in-javascript의 비교는 다음 .indexOf().includes()같습니다.


답변

여기에는 몇 가지 접근 방식이 있습니다.

이 인스턴스에 대해 대소 문자를 구분하지 않고 점검하려면 다음과 같이하십시오.

if (referrer.toLowerCase().indexOf("Ral".toLowerCase()) == -1) {
    ...

또는이 확인을 정기적으로 수행하는 경우에 새로운 indexOf()방법을 추가 할 수 String있지만 대소 문자를 구분하지 않아도됩니다.

String.prototype.indexOfInsensitive = function (s, b) {
    return this.toLowerCase().indexOf(s.toLowerCase(), b);
}

// Then invoke it
if (referrer.indexOfInsensitive("Ral") == -1) { ...


답변

if (referrer.toUpperCase().indexOf("RAL") == -1) { ...


답변

당신은 이것을 시도 할 수 있습니다

str = "Wow its so COOL"
searchStr = "CoOl"

console.log(str.toLowerCase().includes(searchStr.toLowerCase()))