Bagaimana cara memeriksa apakah string yang berisi substring?

Saya memiliki keranjang belanja yang menampilkan produk pilihan di menu dropdown dan jika mereka pilih "ya", saya ingin membuat beberapa bidang lainnya di halaman terlihat.

Masalahnya adalah bahwa keranjang belanja juga termasuk harga pengubah dalam teks, yang dapat berbeda untuk setiap produk. Kode berikut berfungsi:

$(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();
        }
    });
});

Namun saya lebih suka menggunakan sesuatu seperti ini, yang doesn't bekerja:

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

Aku hanya ingin melakukan tindakan jika opsi yang dipilih berisi kata-kata "Ya", dan akan mengabaikan harga pengubah.

Mengomentari pertanyaan (3)
Larutan

Seperti ini:

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

...atau anda dapat menggunakan tilde operator:

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

Ini bekerja karena indexOf() mengembalikan -1 jika string tidak't ditemukan di semua.

Catatan bahwa ini adalah case-sensitive. Jika anda ingin kasus-sensitif cari, anda dapat menulis

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

Atau,

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

Anda bisa menggunakan pencarian atau pertandingan untuk ini.

str.pencarian( 'Ya' )

akan mengembalikan posisi setara, atau -1 jika isn't menemukan.

Komentar (10)

It's cukup terlambat untuk menulis jawaban ini, tapi saya pikir seperti itu bagaimanapun. String.prototipe sekarang memiliki metode mencakup yang dapat memeriksa substring. Metode ini adalah kasus sensitif.

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

Untuk memeriksa substring, pendekatan berikut dapat diambil:

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

Check out dokumentasi untuk mengetahui lebih lanjut.

Komentar (2)

Cara lain:

var testStr = "This is a test";

if(testStr.contains("test")){
    alert("String Found");
}

Diuji pada Firefox, Safari 6 dan Chrome 36

Komentar (4)

ECMAScript 6 memperkenalkan String.prototipe.termasuk, sebelumnya bernama berisi.

Hal ini dapat digunakan seperti ini:

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

Hal ini juga menerima opsional kedua argumen yang menentukan posisi di mana untuk mulai mencari:

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

Hal ini dapat polyfilled untuk membuatnya bekerja pada browser lama.

Komentar (1)

Kembali berapa kali kata kunci tersebut dimasukkan dalam string.

var count = "I have one keyword".match(/keyword/g);
var clean_count = !count ? false : count.length;
Komentar (5)

Anda dapat menggunakan ini Polyfill di ie dan chrome

if (!('contains' in String.prototype)) {
    String.prototype.contains = function (str, startIndex) {
        "use strict";
        return -1 !== String.prototype.indexOf.call(this, str, startIndex);
    };
}
Komentar (2)

meliputi() metode menentukan apakah suatu string dapat ditemukan dalam string yang lain, kembali benar atau palsu secara tepat.

Sintaks :-string.termasuk(searchString [posisi])

searchString:-string yang akan dicari di dalam string ini.

posisi:-Opsional. Posisi pada string ini di mana untuk mulai mencari searchString; default ke 0.

string = 'LOL';
console.log(string.includes('lol')); // returns false 
console.log(string.includes('LOL')); // returns true 
Komentar (1)

Saya tahu bahwa cara terbaik adalah str.indexOf(s) !== -1; http://hayageek.com/javascript-string-contains/

Saya menyarankan cara lain(str.mengganti(s1, "") !== str):

var str = "Hello World!", s1 = "ello", s2 = "elloo";
alert(str.replace(s1, "") !== str);
alert(str.replace(s2, "") !== str);
Komentar (0)

Jika anda mampu menggunakan perpustakaan, anda mungkin menemukan bahwa Lo-Dash JS library ini cukup berguna. Dalam hal ini, pergi ke depan dan memeriksa _.berisi() (diganti oleh _.termasuk() sebagai v4).

(Catatan Lo-Dash konvensi penamaan perpustakaan obyek _. Don't lupa untuk memeriksa instalasi di halaman yang sama untuk mengatur itu untuk proyek anda.)

_.contains("foo", "oo");     // → true
_.contains("foo", "bar");    // → false
// Equivalent with:
_("foo").contains("oo");     // → true
_("foo").contains("bar");    // → false

Dalam kasus anda, pergi ke depan dan menggunakan:

_.contains(str, "Yes");
// or:
_(str).contains("Yes");

..mana satu yang anda suka lebih baik.

Komentar (1)

Anda juga bisa memeriksa apakah yang tepat kata-kata yang terkandung dalam suatu string. E. g.:

function containsWord(haystack, needle) {
    return (" " + haystack + " ").indexOf(" " + needle + " ") !== -1;
}

Penggunaan:

containsWord("red green blue", "red"); // true
containsWord("red green blue", "green"); // true
containsWord("red green blue", "blue"); // true
containsWord("red green blue", "yellow"); // false

Ini adalah bagaimana jQuery tidak hasClass metode.

Komentar (0)

Di atas tidak ada yang bekerja untuk saya karena ada ruang kosong tapi ini adalah apa yang saya lakukan

tr = table.getElementsByTagName("tr");

    for (i = 0; i < tr.length; i++) {
        td = tr[i].getElementsByTagName("td")[0];
        bottab.style.display="none";
        bottab2.style.display="none";
        if (td) {
        var getvar=td.outerText.replace(/\s+/, "") ;

            if (getvar==filter){
                tr[i].style.display = "";
            }else{
                tr[i].style.display = "none";
            }

        }
    }
Komentar (0)

anda dapat menentukan metode penyuluhan dan menggunakannya nanti.

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

sehingga dapat anda gunakan dalam halaman anda di mana saja seperti:

var str="hello how are you";
str.contains("are");

yang kembali sejati.

Lihat di bawah posting untuk lebih ekstensi metode pembantu. Javascript metode pembantu

Komentar (0)