Je souhaite rechercher uniquement le mot spécifique de ma chaîne en utilisant javascript. Mais l'utilisation de match, indexOf ou includes ne fonctionne pas correctement. Supposons que
let str = "Widget test";
if (~str.indexOf("Widge")) {
console.log( 'Found it!' );
}
il affichera le mot trouvé car il ne correspond pas au mot entier uniquement à la sous-chaîne. Comment puis-je le renvoyer à found si seule la correspondance est Widget
Mais ce que je veux, c'est:
if input string = Widget, output = true
if chaîne d'entrée = Widge, sortie = faux
4 Réponses :
Pour correspondre au mot exact, vous devrez utiliser une expression régulière.
/ \ bWidget \ b / correspondra au mot entier.
Dans votre exemple:
let str = "Widget";
if (str.search(/\bWidget\b/) >= 0) {
console.log( 'Found it!' );
}
RegEx est idéal pour ce type de choses, mais -> vous devrez , ce n'est pas vrai.
Vous avez raison, ce n'est qu'une approche à ce problème :)
Vous pouvez également essayer ceci.
let str = "Widget test";
if(str.split(" ").indexOf('Widge') > -1) {
console.log( 'Found it!' );
}
En essayant de répondre à cette question, la bonne réponse a été fournie. Et il était également un peu difficile de savoir ce que OP veut réellement ...
... alors en attendant, j'ai écrit cette terrible solution de ~ hack ~:
const matchType = (source = '', target = '') => {
const match = source.match(target) || [];
return (!isNaN(match.index) && !!~match.index)
? match.input === target ? 'complete' : 'partial'
: 'none';
};
console.log(matchType('foo', 'bar'));
console.log(matchType('foo', 'fo'));
console.log(matchType('foo', 'foo'));
Vous pouvez maintenant avoir trois types de matchs différents, n'est-ce pas cool? : D
si la chaîne n'est pas trouvée, indexOf renverra -1 afin que vous puissiez vérifier que l'index n'est pas égal à -1 que la chaîne trouvée
let str = "Widget test";
if (str.indexOf("wi")!= -1) {
console.log( 'Found it!' );
}
<!DOCTYPE html> <html> <body> <button type="button" onclick="match()">Click Me!</button> </body> </html>
function match(){
var test = "Widget test";
if (test.indexOf("widget")!= -1) {
alert( 'Found it!' );
}else{
alert( 'Sorry,not Found it!' );
}
}
Quelles sont les entrées et sorties possibles?
@JamesCoyle modifié, vérifiez maintenant
utilisez simplement
str == "Widget"et si vous voulez faire correspondre n'importe quel mot, utilisezstr.split (/ \ s + /)utilisez indexOf sur un tableau.Votre chèque est dans le mauvais sens, .. essayez ->
~ "Widge" .indexOf ("Widget")Une raison de privilégier l'opérateur au niveau du bit par rapport à
String.contains?