Jak sprawdzić czy zmienna zawiera określony tekst

0

Hej, mam dwie wartości i chciałbym sprawdzić czy w wartości drugiej występuje teskt z wartości pierwszej.

var value1 = "Wartosc jeden";
var value2 = "To jest Wartosc jeden";

Chciałbym sprawdzić czy w zmiennej value2 występuje wartość zmiennej value1 ważne że nie musi sprawdzić czy znajduje się tam cała wartość zmiennej value1 a nie tylko jedno słowo.

Tak jest w internetach:

$('#main-content-panel .entry:contains("Replace Me")').css('color', 'red');

Ale nie potrafię tego zmienić żeby było w ten sposób

$(value2:contains(value1))
0

A co ma do tego jQuery? jQuery służy (głównie) do spacerowania po DOM, a nie do operacji na stringach, które są "wbudowane".

var czy_wartosc_sie_zawiera = value2.indexOf(value1)!==-1;
alert(czy_wartosc_sie_zawiera);
2

.css mój drogi to zmienia style elementu pasującego do selektora, a ten selektor pochodzi z biblioteki jQuery. To co Ci mogę polecić to weź do ręki jakąś książkę np. Head First Javascript na dobry początek i pożądnie się naucz :)

var substr = "Wartosc jedenascie";
var str = "To jest Wartosc jeden";

/**
 * @param {String} searchForStr
 * @param {Boolean} singleWords if true search will be performed for each word in searchForStr
 * @returns {*}
 */
String.prototype.contains = function(searchForStr, singleWords) {
    if(!singleWords)
        // this.search jeżeli nie znajdzie to zwraca index który przyjmuje wartość -1
        // -1 jest falsy, a ~ zamienia -1 na 0 == false gdy funkcja zwroci index różny od -1
        // dostaniemy i tak true, ponieważ liczby dodanie i ujemny == true
        return ~this.search(searchForStr);

    // tworzymy tablice ze slow w searchForStr i robimy to samo co wyzej
    // dla kazdego elementu tej tablicy
    // funkcja some zatrzymuje sie w momencie pierwszego true
    return searchForStr.split(' ').some(function(str) {
        return ~this.search(str);
    }.bind(this)); // bindujemy this, żeby pod this był nasz String, a nie tablica
};

console.log(str.contains(substr)); // false nie zawiera wartosc jedenascie
console.log(str.contains(substr, true)); // true zawiera wartosc

substr = "nie ma";

console.log(str.contains(substr, true)); // false nie zawiera ani "nie" ani "ma"

Generalnie nie powinno się ruszać prototypu String, ani innych natywnych prototypow tylko stworzyć swój własny jakieś Utils czy coś takiego, ale póki co się nie masz co tym przejmować.

0

Rozwiązanie dzek69 działa. Próbowałem z IndexOf i mi coś nie działało :(
Biorę się za naukę tego bo niby coś wiem a nic nie wiem :<
Dzięki za odpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1