문자열에 JavaScript에서 하위 문자열이 포함되어 있는지 확인하는 방법


Answers

다음 문을 사용하여 String에 contains 메소드를 쉽게 추가 할 수 있습니다.

String.prototype.contains = function(it) { return this.indexOf(it) != -1; };

참고 : 이 주석을 사용하지 않는 것에 대한 유효한 인수는 아래 주석을 참조하십시오. 나의 조언 : 당신의 판단을 사용하십시오.

대안 :

if (typeof String.prototype.contains === 'undefined') { String.prototype.contains = function(it) { return this.indexOf(it) != -1; }; }
Question

일반적으로 나는 String.contains() 메소드를 기대할 것이지만, 하나 인 것처럼 보이지는 않는다.

이것을 확인하는 합리적인 방법은 무엇입니까?




매끄럽고 좋은 방법이 있으며 BitWise NOT 연산자를 사용하고 있습니다.

if(~"John".indexOf("J")) {
  alert("Found")
}
else {
  alert("Not Found");
}

Bitwise Not는 "x"를 - (x + 1)로 변환합니다. 따라서 x가 indexOf method에서 -1이 나오면 - (-1 + 1) = -0으로 변환되어 위조 된 값이됩니다.




이 작업을 수행하는 또 다른 옵션은 다음과 같습니다.

일치 함수를 사용할 수 있습니다. 즉, 다음과 같습니다.

x = "teststring";

if (x.match("test")) {
     // Code
}

match ()는 또한 정규 표현식을 사용할 수 있습니다.

x = "teststring";

if (x.match(/test/i)) {
     // Code
}



자바 스크립트

 var str = "My big string contain apples and oranges";
 var n = str.indexOf("apples"); 
 alert(n); //will alert 22, -1 if not found

jQuery

  <p>My big string contain apples and oranges</p>
  alert($("p:contains(apples)")[0] != undefined); //will alert true if found



자바 스크립트에서 contains 메소드를 작성하는 일반적인 방법 은 다음과 같습니다.

if (!String.prototype.contains) {
    String.prototype.contains = function (arg) {
        return !!~this.indexOf(arg);
    };
}

비트 부정 연산자 ( ~ )는 -10 (거짓)으로 바꾸고 다른 모든 값은 0이 아닌 (사실) 것입니다.

이중 부울 부정 연산자는 숫자를 부울로 변환하는 데 사용됩니다.







일종의 유효한 솔루션을 수집하려면 다음을 수행하십시오.

var stringVariable = "some text";
var findString = "text";

//using `indexOf()`
var containResult1 = stringVariable.indexOf(findString) != -1;
document.write(containResult1+', ');

//using `lastIndexOf()`
var containResult2 = stringVariable.lastIndexOf(findString) != -1;
document.write(containResult2+', ');

//using `search()`
var containResult3 = stringVariable.search(findString) != -1;
document.write(containResult3+', ');
     
//using `split()`
var containResult4 = stringVariable.split(findString)[0] != stringVariable;
document.write(containResult4+'');




배열에서 contains 메소드를 사용하는 JavaScript 코드입니다.

<html>
    <head>
        <h2>Use of contains() method</h2>
        <script>
            Array.prototype.contains = function (element) {
                for (var i = 0; i < this.length; i++) {
                    if (this[i] == element) {
                        return true;
                    }
                }
                return false;
            }
            arr1 = ["Rose", "India", "Technologies"];
            document.write("The condition is "+arr1.contains("India")+"<br>");
        </script>
    </head>

    <b>[If the specified element is present in the array, it returns true otherwise
    returns false.]</b>

</html>

주어진 코드에서 contains 메소드는 지정된 요소가 배열에 있는지 여부를 판별합니다. 지정된 요소가 배열에 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.




JavaScript search() 메소드를 사용할 수 있습니다.

구문은 다음과 같습니다. string.search(regexp)

일치하는 위치를 반환하거나 일치하는 항목이 없으면 -1을 반환합니다.

여기에 예제가 있습니다 : jsref_search

복잡한 정규식 구문이 필요 없습니다. 당신이 그들에게 익숙하지 않다면 간단한 st.search("title") 이 할 것입니다. 테스트에서 대소 문자를 구별하지 st.search(/title/i) 수행해야합니다.




못생긴 -1 수표를 작성하는 대안을 찾고 있다면 대신 ~ 물결표를 앞에 붙입니다.

if (~haystack.indexOf('needle')) alert('found');

Joe Zimmerman - ~에 -1을 사용하면 0으로 변환됩니다. 숫자 0은 거짓 값입니다. 즉, 부울 값으로 변환 될 때 false로 평가됩니다. 처음에는 큰 통찰력처럼 보이지 않을 수도 있지만 indexOf와 같은 함수는 쿼리를 찾을 수 없을 때 -1을 반환합니다. 이것은 다음과 비슷한 것을 쓰는 대신에 :

if (someStr.indexOf("a") >= 0) {
  // Found it
} else  {
  // Not Found
}

이제 코드에서 더 적은 문자를 사용할 수 있으므로 다음과 같이 작성할 수 있습니다.

if (~someStr.indexOf("a")) {
  // Found it
} else  {
  // Not Found
}

자세한 내용은 여기에




jQuery의 :contains 셀렉터를 사용할 수있다.

$("div:contains('John')")

그것을 여기에서 검사하십시오 : contains-selector




var index = haystack.indexOf(needle);



간단한 해결 방법

if (!String.prototype.contains) {
  String.prototype.contains= function() {
    return String.prototype.indexOf.apply(this, arguments) !== -1;
  };
}

당신은 다음과 같은 방법으로 사용할 수 있습니다.

"hello".contains("he") // true
"hello world".contains("lo w")//true
"hello world".contains("lo wa")//false
"hello world".contains(" ")//true
"hello world".contains("  ")//false

MDN 참조




.indexOf String.prototype.indexOf 을 찾고있었습니다.

indexOf 는 일치하는 하위 문자열에 대한 인덱스를 반환합니다. 인덱스는 부분 문자열이 시작되는 위치와 상관 관계가 있습니다. 일치하는 것이 없으면 -1이 리턴됩니다. 다음은 그 개념의 간단한 데모 입니다.

var str = "Hello World"; // For example, lets search this string,
var term = "World"; // for the term "World",
var index = str.indexOf(term); // and get its index.
if (index != -1) { // If the index is not -1 then the term was matched in the string,
  alert(index); // and we can do some work based on that logic. (6 is alerted)
}




가장 쉬운 방법은 실제로 indexOf를 사용하는 것입니다. 하위 문자열 substr 대한 문자열 string 을 검사하기 위해이 방법을 사용할 수 있습니다.

string = "asdf";
substr = "as";
alert(string.indexOf(substr) == -1 ? false : true);

string.contains() 함수를 원했기 때문에 다음과 같이 직접 구현할 수 있습니다.

String.prototype.contains = function(test) {
    return this.indexOf(test) == -1 ? false : true;
};

이제이 ecen 단축 메서드를 사용하여 문자열에 특수 하위 문자열이 들어 있는지 확인할 수 있습니다.

string = "asdf";
alert(string.contains("as"));

JSFiddle 도 있습니다.




Related