나는 다음을 가지고있다 :
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()))