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




15 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; }; }
match nodejs includes

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

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




ES6에는 string.includes 가 있습니다 .

"potato".includes("to");
> true

이전 브라우저에서이 기능을 사용하려면 es6-shim 또는 유사한 것을로드해야합니다.

require('es6-shim')



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
}

자세한 내용은 여기에




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

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

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

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




여기저기서 웹에있는 코드 스 니펫을 사용하는 대신 잘 테스트되고 문서화 된 라이브러리를 사용할 수도 있습니다. 두 가지 옵션 :

첫 번째 옵션 : 사용 Lodash : 그것은 includes 방법이 있습니다 :

_.includes('foobar', 'ob');
// → true

Lodash는 npm에 가장 많이 사용되는 javascript 라이브러리 의존성이며 유용한 javascript 유틸리티 메소드가 있습니다. 그래서 많은 프로젝트에서 당신은 이것을 원할 것입니다 ;-)

두 번째 옵션 : 또는 Underscore.string 사용하십시오 : include 메소드가 있습니다 :

_.str.include('foobar', 'ob');
// → true

Underscore.string에 대한 설명은 다음과 같습니다. 9KB가 추가되었지만 잘 테스트되고 문서화 된 라이브러리가 copy'n'paste 코드 스 니펫에 비해 많은 이점을 제공합니다.

Underscore.string은 Prototype.js, Right.js, Underscore 및 아름다운 Ruby 언어에서 영감을 얻은 Underscore.js의 문자열, 편안한 확장을위한 JavaScript 라이브러리입니다.

Underscore.string은 몇 가지 유용한 기능을 제공합니다 : 대문자, 소거, 포함, 개수, 이스케이프 HTML, 이스케이프 HTML, 삽입, 스플 라이스, startsWith, endsWith, titleize, trim, truncate 등등.

음, Underscore.string은 Underscore.js의 영향을 받지만 Underscore.js 없이 사용할 수 있습니다.

마지막 내용 : JavaScript 버전 ES6에는 내장 메소드가 includes .

'foobar'.includes('ob');
// → true

최신 브라우저는 이미 지원하므로 ES6 호환성 표를 참조하십시오 .







.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)
}




이것은 나를 위해 일했습니다. "Deleted :"라는 용어가없는 문자열을 선택합니다.

if (eventString.indexOf("Deleted:") == -1)



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

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

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




var a  = "Test String";

if(a.search("ring")!=-1){
     //exist 
} else {
     //not found 
}






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

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+'');




자바 스크립트

 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



inbuilt와 가장 간단한 것, 즉 문자열에 match() 를 사용하십시오. 기대하는 바를 달성하려면 다음과 같이하십시오.

var stringData ="anyString Data";

var subStringToSearch = "any";

// This will give back the substring if matches and if not returns null
var doesContains = stringData.match(subStringToSearch);

if(doesContains !=null) {
    alert("Contains Substring");
}



Related