문자열에 하위 문자열이 포함되어 있는지 확인하려면 어떻게 해야 합니까?

드롭다운 메뉴에 제품 옵션을 표시하는 장바구니가 있는데, “예”를 선택하면 페이지의 다른 필드를 표시하도록 하겠습니다.

문제는 장바구니에도 가격변동자가 텍스트에 포함되어 있어 제품마다 다를 수 있다는 것입니다.다음 코드가 작동합니다.

$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str == "Yes (+ $6.95)") {
 $('.engraving').show();
} else {
 $('.engraving').hide();
}
}); }); 

다만, 다음과 같은 것을 사용하는 것이 좋습니다.이러한 방법은 동작하지 않습니다.

$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
 $('.engraving').show();
} else {
 $('.engraving').hide();
}
}); }); 

선택한 옵션에 “예”라는 단어가 포함되어 있고 가격 수식자를 무시하는 경우에만 작업을 수행합니다.



질문에 대한 답변



다음과 같이 합니다.

if (str.indexOf("Yes") >= 0) 

…또는 tilde 연산자를 사용할 수 있습니다.

if (~str.indexOf("Yes")) 

이것은, 다음과 같은 이유로 동작합니다.indexOf()돌아온다-1만약 그 끈이 전혀 발견되지 않았다면요.

이것은 대소문자를 구분합니다.
대소문자를 구분하지 않는 검색을 원하는 경우,

if (str.toLowerCase().indexOf("yes") >= 0) 

또는 다음 중 하나를 선택합니다.

if (/yes/i.test(str)) 

후자는 정규 표현 또는 정규 표현입니다.

정규식 분석:

  • /이것이 정규식임을 나타냅니다.
  • yes정규식이 정확한 순서로 정확한 문자를 찾는다는 것을 의미합니다.
  • /정규식을 종료하다
  • iregex 를 대소문자를 구분하지 않고 설정합니다.
  • .test(str)정규 표현과 일치하는지 여부를 판별합니다.str요약하자면, 글자를 찾을 수 있는지 확인한다는 뜻이다.y,e,그리고.s정확한 순서로, 대소문자를 반복하여, 변수에서str



검색 또는 일치 항목을 사용할 수 있습니다.

str.search( 'Yes' )

일치하는 위치를 반환합니다. 찾을 수 없는 경우 -1을 반환합니다.




이 답을 쓰기에는 다소 늦었지만, 어쨌든 나는 그것을 포함하려고 생각했다. String.prototype이제 방법이 있다includes서브스트링을 체크할 수 있습니다.이 메서드는 대소문자를 구분합니다.

var str = 'It was a good date'; console.log(str.includes('good')); // shows true console.log(str.includes('Good')); // shows false 

서브스트링을 확인하려면 다음 방법을 사용합니다.

if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
// mainString contains substringToCheck } 

상세한 것에 대하여는, 메뉴얼을 참조해 주세요.




다른 방법:

var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found"); } 

** Firefox, Safari 6, Chrome 36에서 테스트 완료 **




ECMAScript 6 에서는, 이전에 이름이 붙여져 있던 것이 도입되고 있습니다.contains.

다음과 같이 사용할 수 있습니다.

'foobar'.includes('foo'); // true 'foobar'.includes('baz'); // false 

또, 검색을 개시하는 위치를 지정하는 옵션의 second 인수도 받아들입니다.

'foobar'.includes('foo', 1); // false 'foobar'.includes('bar', 1); // true 

오래된 브라우저에서 작동하도록 폴리필링할 수 있습니다.