Jak sprawdzić, czy string zawiera podłańcuch? [duplikat]
To pytanie ma już odpowiedź tutaj:
Mam koszyk, który wyświetla opcje produktu w rozwijanym menu i jeśli wybierają "tak", chcę, aby niektóre inne pola na stronie były widoczne.
Problem polega na tym, że Koszyk zawiera również modyfikator ceny w tekście, który może być inny dla każdego produktu. Działa następujący kod:
$(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();
}
});
});
Jednak wolałbym użyć czegoś takiego, co nie działa:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Chcę wykonać akcję tylko wtedy, gdy wybrana opcja zawiera słowo " tak " i zignoruje modyfikator ceny.
13 answers
Tak:
if (str.indexOf("Yes") >= 0)
...można też użyć operatora tyldy:
if (~str.indexOf("Yes"))
To działa, ponieważ indexOf()
zwraca -1
jeśli łańcuch nie został znaleziony.
Zauważ, że rozróżnia się wielkość liter.
Jeśli chcesz, aby wyszukiwanie było niewrażliwe na wielkość liter, możesz napisać
if (str.toLowerCase().indexOf("yes") >= 0)
Lub
if (/yes/i.test(str))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-17 14:45:34
Możesz użyć search lub match do tego.
str.search( 'Yes' )
Zwróci pozycję meczu lub -1, jeśli nie zostanie znaleziona.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-13 21:29:00
Inny sposób:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
** testowane na Firefoksie, Safari 6 i Chrome 36 * *
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-17 19:47:09
Jest dość późno, aby napisać tę odpowiedź, ale myślałem o włączeniu go tak czy inaczej. {[2] } ma teraz metodę includes
, która może sprawdzić podciąg. Ta metoda uwzględnia wielkość liter.
var str = 'It was a good date';
console.log(str.includes('good')); // shows true
console.log(str.includes('Good')); // shows false
Aby sprawdzić podciąg, można zastosować następujące podejście:
if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
// mainString contains substringToCheck
}
Aby dowiedzieć się więcej, zapoznaj się z dokumentacją .Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-07 13:38:00
ECMAScript 6 wprowadza String.prototype.includes
, poprzednio Nazwa contains
.
Można go używać w następujący sposób:
'foobar'.includes('foo'); // true
'foobar'.includes('baz'); // false
Akceptuje również opcjonalny drugi argument, który określa pozycję, na której należy rozpocząć wyszukiwanie:
'foobar'.includes('foo', 1); // false
'foobar'.includes('bar', 1); // true
Może być polyfilled , aby działał na starych przeglądarkach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-16 23:00:05
Możesz użyć tego Polyfill w ie i chrome
if (!('contains' in String.prototype)) {
String.prototype.contains = function (str, startIndex) {
"use strict";
return -1 !== String.prototype.indexOf.call(this, str, startIndex);
};
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-03 14:09:12
Zwraca liczbę razy słowo kluczowe jest zawarte w łańcuchu.
var count = "I have one keyword".match(/keyword/g);
var clean_count = !count ? false : count.length;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-17 02:54:36
Metoda includes() określa, czy jeden łańcuch może zostać znaleziony w innym łańcuchu, zwracając odpowiednio true lub false.
Składnia: - string.includes (searchString[, position])
SearchString: - ciąg znaków do przeszukiwania wewnątrz tego ciągu.
Pozycja: - Opcjonalnie. Pozycja w tym łańcuchu, na której należy rozpocząć wyszukiwanie searchString; Domyślnie 0.
string = 'LOL';
console.log(string.includes('lol')); // returns false
console.log(string.includes('LOL')); // returns true
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-20 11:47:12
Wiem, że najlepszym sposobem jest str.indexOf(s) !== -1;
http://hayageek.com/javascript-string-contains/
Proponuję inny sposób(str.replace(s1, "") !== str
):
var str = "Hello World!", s1 = "ello", s2 = "elloo";
alert(str.replace(s1, "") !== str);
alert(str.replace(s2, "") !== str);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-01 06:05:19
Jeśli jesteś w stanie korzystać z bibliotek, może się okazać, że lo-Dash biblioteka JS jest całkiem przydatna. W tym przypadku sprawdź _.contains()
(zastąpiony przez _.includes()
od wersji v4).
(Uwaga konwencja Lo-Dash nazywa obiekt biblioteki_. Nie zapomnij sprawdzić instalacji na tej samej stronie, aby skonfigurować ją dla swojego projektu.)
_.contains("foo", "oo"); // → true
_.contains("foo", "bar"); // → false
// Equivalent with:
_("foo").contains("oo"); // → true
_("foo").contains("bar"); // → false
W Twoim przypadku, śmiało użyj:
_.contains(str, "Yes");
// or:
_(str).contains("Yes");
..który wolisz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-12 16:19:30
Możesz również sprawdzić, czy dokładne słowo jest zawarte w łańcuchu. Np.:
function containsWord(haystack, needle) {
return (" " + haystack + " ").indexOf(" " + needle + " ") !== -1;
}
Użycie:
containsWord("red green blue", "red"); // true
containsWord("red green blue", "green"); // true
containsWord("red green blue", "blue"); // true
containsWord("red green blue", "yellow"); // false
Tak jQuery robi swoją metodę hasClass.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-24 09:04:18
Żadne z powyższych nie działało dla mnie, ponieważ były puste spacje, ale to właśnie zrobiłem
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";
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-17 00:14:17
Możesz zdefiniować metodę rozszerzenia i użyć jej później.
String.prototype.contains = function(it)
{
return this.indexOf(it) != -1;
};
Tak, że można użyć na swojej stronie w dowolnym miejscu, jak:
var str="hello how are you";
str.contains("are");
Który zwraca true .
Zobacz poniższy post, aby uzyskać więcej metod pomocniczych rozszerzeń. Javascript helper methods
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-03 13:08:27