7
votes

Comment gérer% 20 pendant la comparaison de chaînes en C #

J'essaie de comparer deux cordes, mais l'une des chaîne contient un espace blanc à la fin. J'ai utilisé la garniture () et comparé mais ne fonctionnait pas parce que cet espace blanc est converti en% 20 et je ne le supprime pas. C'est quelque chose comme "abc" et "ABC% 20" , que puis-je faire dans une telle situation pour comparer les chaînes qui ignorent le cas aussi?


1 commentaires

Utilisez Server.UnLDecode («ABC% 20») avant la comparaison ou l'écriture de votre propre comparateur, qui gère cela.


7 Réponses :


0
votes

Avez-vous essayé cela? XXX


0 commentaires

0
votes

Vous pouvez utiliser string.replace code> et puisque vous avez mentionné l'insensibilité de casse string.toBower code> comme ceci:

var str1 = "abc";
var str2 = "Abc%20";
str1.Replace("%20", "").ToLower() == str2.Replace("%20", "").ToLower();
// will be true


0 commentaires

5
votes

Utilisez HTTTPUTILITTILITTILITTILITY.ULDECODE pour décoder les chaînes:

string s1 = "abc ";
string s2 = "abc%20";
if (System.Web.HttpUtility.UrlDecode(s1).Equals(System.Web.HttpUtility.UrlDecode(s2)))
{
    //equals...
}


3 commentaires

String.equals n'est pas nécessaire, vous pouvez également utiliser == .


@ggpeti Je sais, en utilisant .equals () est juste plus lisible à mes yeux, alors quand il n'y a pas de risque de null s je l'utilise.


Chacun à eux-mêmes! Je viens de comprendre OP trouverait ce morceau d'informations utile.



1
votes

Le "% 20" code> est la version codée de l'URL du caractère '' code> (espace). Comparez-vous un paramètre d'URL codé? Si tel est le cas, vous pouvez utiliser:

decoded.Equals(otherValue, StringComparison.OrdinalIgnoreCase);


0 commentaires

6
votes

% 20 est la version de l'espace encodé de l'URL.

Vous ne pouvez pas le désactiver directement à l'aide de Cadmin () , mais vous pouvez utiliser HTTTPUTILITTILITTILLY.ULDECODE () Pour décoder le % 20 Retour à un espace, puis couper exactement la comparaison comme vous le feriez autrement; xxx


0 commentaires

1
votes

quelque chose comme: xxx


2 commentaires

Notez ce .


Tu as raison, je ne l'ai pas pensé. Merci pour la correction.



0
votes

Il semble que le problème de la racine est lorsque vous souhaitez encoder l'URL. Si vous utilisez le codage du personnage, vous n'obtiendrez jamais% 20. Le codage par défaut utilisé par HTTTPUTITUILLY.URLENCODE UTF-8. Voici l'utilisation xxx pré>

et ici, sur Site Web Microsoft Vous pouvez en savoir plus sur le codage des caractères. Et si vous effectuez un codage correct, vous pouvez éviter le reste du travail p>

et voici ce que vous avez demandé - p>

Le second cas - si vous devez comparer deux chaînes selon vos besoins. , vous devez décoder HTTTPUTILITTILITTILLY.ULDECODE (TEST) P>

Console.WriteLine("Result is", result ? "equal." : "not equal.");


0 commentaires