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" code> et "ABC% 20" code>, que puis-je faire dans une telle situation pour comparer les chaînes qui ignorent le cas aussi? P>
7 Réponses :
Avez-vous essayé cela?
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
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...
}
String.equals Code> n'est pas nécessaire, vous pouvez également utiliser == code>.
@ggpeti Je sais, en utilisant .equals () code> est juste plus lisible à mes yeux, alors quand il n'y a pas de risque de null code> s je l'utilise.
Chacun à eux-mêmes! Je viens de comprendre OP trouverait ce morceau d'informations utile.
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);
Vous ne pouvez pas le désactiver directement à l'aide de % 20 code> est la version de l'espace encodé de l'URL. Cadmin () code>, mais vous pouvez utiliser HTTTPUTILITTILITTILLY.ULDECODE () Pour décoder le % 20 CODE> Retour à un espace, puis couper exactement la comparaison comme vous le feriez autrement; P>
quelque chose comme:
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 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.");
Utilisez Server.UnLDecode («ABC% 20») avant la comparaison ou l'écriture de votre propre comparateur, qui gère cela.