0
votes

Comment vérifier et supprimer des espaces blancs supplémentaires d'une chaîne pendant la vérification des conditions

if (userResponseField.value.toUpperCase().includes('MY NAME IS ') === true || userResponseField.value.toUpperCase().includes('MY NAME\'S ') === true) {
What I am basically trying to do is create some sort of chatbot and it's working perfectly, it's just that it gets confused by extra whitespaces. How can I remove them during the condition check? I've looked for answers but none of them worked with the condition, they are still correct though, just not working with the way I want to do this whole thing. Note: I don't want the condition to make changes to the string/variable itself. 

1 commentaires

Ne travaillez tout simplement pas avec la façon dont je veux faire tout ce genre de choses <= Soyez clair sur la façon dont vous voulez tout ce qui est alors;)


4 Réponses :


0
votes

3 commentaires

Salut! J'ai déjà essayé la garniture (). Malheureusement, ça ne fait pas ce que je veux. Merci quand même!


@Plamendobrev CARD ne mute pas votre chaîne d'origine


Ce que je voulais dire, c'est que le bot est toujours confus par ces espaces blancs supplémentaires.



0
votes

Vous pouvez utiliser string.prototype.trim () code> sur la valeur et la chaîne codée dur:

p>

var userResponseField = {};
userResponseField.value = 'MY NAME IS';
if (userResponseField.value.toUpperCase().trim().includes('MY NAME IS '.trim()) === true || userResponseField.value.toUpperCase().trim().includes('MY NAME\'S '.trim()) === true) {
console.log("true");
}


3 commentaires

Salut! J'ai déjà essayé la garniture (). Malheureusement, ça ne fait pas ce que je veux. Merci quand même!


@Plamendobrev l'avez-vous utilisé sur les deux comparaisons?


Oui je l'ai fait. Même essayé de répondre (le bot) dans les deux sens. Cela n'a pas fonctionné. J'apprécie toujours l'aide.



1
votes

Vous pouvez utiliser regex:

si (Userresponsefield.value.match (/ My \ S + Nom (\ S + i |) S / GI)) Code> P> Ceci renvoie true pour les entrées telles que 'mon nom est' code>. p>

p>

let predicate = str => !!str.match(/my\s+name(\s+i|')s/gi);

[
  'my NaME    iS    ',
  'my NaME\'s',
  'my name s',
  'my ame is',
  'my nameis',
].forEach(input => console.log(input, ':', predicate(input)));


2 commentaires

Cela ne fonctionne pas comme ça devrait être. J'ai aussi essayé Regex mais cela n'a pas fait le travail.


C'est super. Vous aurez besoin de fournir plus de détails si vous êtes intéressé par l'aide?



0
votes

C'est moi encore moi. J'ai trouvé une façon intelligente de faire cela et si certains d'entre vous, à l'avenir, ont ce problème et je viens de trouver ce fil, voici comment j'ai résolu mon problème: xxx

depuis ce code , avec la condition que j'ai affiché ci-dessus sont stockées dans une fonction, le userseresponsefieldoutputt est ce que je vais utiliser pour la sortie des messages de l'utilisateur dans la chatbox. Il reste non édité, tandis que le userseresponsefield.value a ses espaces supprimés.

par exemple: xxx

ignorer le Nom d'utilisateur variable, il fait partie du code qui ne doit pas être affiché maintenant. C'est une autre fonction que j'ai faite, la première valeur est ce qui apparaît dans la discussion sur le côté droit, où les réponses de l'utilisateur sont affichées. La chaîne et la variable après la virgule sont ce qui apparaît sur le côté gauche de la conversation, où les messages du chatbot sont affichés. Mais comme vous pouvez le constater, je n'utilise pas userseresponsefield.value . Au lieu de cela, j'utilise userseresponsefieldoutput , qui imprimera la sortie de l'utilisateur sans les espaces blancs supplémentaires enlevés.

J'espère avoir été utile à tous ceux qui recherchent un solution à ce problème.


0 commentaires