2009-10-22 4 views
0

Il y a un cas où je reçois une chaîne avec les caractères spéciaux suivants en elle:La comparaison du caractère spécial suivant dans JavaScript renvoie un résultat inapproprié?

<[email protected]#$%^&*()_+|}{":?></.,';][=-`~DS0> 

Tout en effectuant une opération de comparaison sur cette chaîne en utilisant l'opérateur à double égal à (==) en JavaScript, il ne cède pas le résultat approprié.

Bien que les deux chaînes contiennent la même chaîne spécifiée, l'opération de comparaison ne renvoie pas true.

Mon cas se traduirait par un peu comme cela en JavaScript:

var strValue = "<[email protected]#$%^&*()_+|}{":?></.,';][=-`~DS0>"; 
var itrValue = "<[email protected]#$%^&*()_+|}{":?></.,';][=-`~DS0>"; 
if (itrValue == strValue) { 
    alert("True"); 
} else { 
    alert("false"); 
} 
+1

Vous avez un guillemet au milieu non échappés de itrVal ue Cela provoque une erreur "SyntaxError: label non valide" dans Firebug. Alerte-t-elle vraiment "faux", ou est-ce que ça cesse juste tranquillement et douloureusement? – Boldewyn

+0

Non, il ne retourne rien. En fait, je veux que le code fonctionne de cette façon. Renvoie-moi vrai ou faux. J'ai besoin de modifier les chaînes de telle sorte que la comparaison sur eux peut être effectuée. Et oui, le problème est dû à 2 choses 1) u spécifiés guillemet 2 séquence d'échappement), la présence des entités de caractères HTML font référence à http://www.w3schools.com/HTML/html_entities.asp Existe-t-il un moyen de comparer de telles chaînes en javascript? – Arun

Répondre

2

Première: Je pense que vous avez besoin d'échapper à ces guillemets avec des barres obliques inverses (quelque chose comme \ ")

Deuxième:. Comme autant que je peux voir ces deux chaînes ne sont pas identiques.Vous pouvez essayer quelque chose de plus comme indexof (référence des écoles W3), comme les états popester correctement

+0

effectivement les chaînes sont équivalentes. mais en quelque sorte l'éditeur ne l'affiche pas de manière appropriée. les deux chaînes sont Arun

+0

Voir le commentaire de Boldewyn – KB22

+1

Vous devez échapper' ' '(et peut-être aussi "'" aussi bien), l'éditeur de stackoverflow fait remarquer votre problème (regardez les différentes couleurs dans votre bloc de code) – laura

0

Vous pouvez utiliser la méthode indexOf qui renverra -1 si un index ne peut pas être trouvé comme les deux réponses ci-dessus état

Quelque chose légèrement d ifferent (pas tout à fait sûr si vous cherchez ceci, indexOf est probablement votre meilleur pari) utilise la méthode String.match ou String.split. String.match retournera null s'il n'y a pas de correspondance, sinon elle retournera un tableau de tous les éléments contenant votre chaîne (EG:

var str = "Test123 ABC Test 123Test ABC" 
var macthes = str.match("/Test/g") // You can have any regular expression here 
document.write(matches[0]) 
document.write(matches[1]) 
document.write(matches[2]) 

Produira Test123 test 123Test String.split produira un tableau de chaînes divisé à votre chaîne initiale.

0

Je viens échappai la double citation dans la chaîne et je suis une belle true de l'opérateur == ...

var strValue = "<[email protected]#$%^&*()_+|}{\":?></.,';][=-`~DS0>"; 
var itrValue = "<[email protected]#$%^&*()_+|}{\":?></.,';][=-`~DS0>"; 
alert(strValue == itrValue) 
+0

ya qui a travaillé victorieux. – Arun

Questions connexes