Nous avons récemment mis à jour l'ensemble de nos projets .NET 3.5 .NET 4. J'ai rencontré une étrange question à l'égard string.IndexOf()
.
Mon code n'est évidemment quelque chose de légèrement différent, mais dans le processus d'enquêter sur la question, j'ai trouvé que l'appelant IndexOf()
sur une corde avec lui-même retourné 1 au lieu de 0.
En d'autres termes:
string text = "\xAD\x2D"; // problem happens with "-dely N.China", too;
int index = text.IndexOf(text); // see update note below.
M'a donné un indice de 1, au lieu de 0. Un couple de choses à noter à propos de ce problème:
Les problèmes semblent être liées à ces traits d'union (le premier caractère est un caractère Unicode doux trait d'union, le deuxième est un habitué de trait d'union).
J'ai vérifié, cela ne se produit pas .NET 3.5, mais n'en .NET 4.
Modification de l'
IndexOf()
faire un ordinal comparer résout le problème, pour une raison que le premier caractère est ignoré par défaut estIndexOf
.
Personne ne sait pourquoi cela se produit?
MODIFIER
Désolé les gars, faites un peu de tout ça sur le post original et a obtenu le caché tableau de bord en deux fois. J'ai mis à jour la chaîne, ce qui devrait indice de rendement de 1 au lieu de 2, aussi longtemps que vous le collez dans le bon éditeur.
Mise à jour:
Changé le problème initial de la chaîne à un endroit où chaque personnage est clairement visible (à l'aide d'échappement). Cela simplifie la question un peu.