Question

J'arrive à la dernière étape de mon implémentation de corde (une version plus évolutive de String ). Évidemment, je veux que toutes les opérations donnent le même résultat que les opérations sur les String autant que possible.

Faire cela pour des opérations ordinales est assez simple, mais je crains de mettre en œuvre correctement des opérations sensibles à la culture. Surtout que je ne connais que deux langues et que, dans les deux cas, les opérations sensibles à la culture se comportent exactement comme les opérations ordinales!

Alors, y a-t-il des choses spécifiques que je pourrais tester et avoir au moins une certaine assurance que je fais les choses correctement? Je sais, par exemple, à propos de & # 223; être égal à SS en ignorant les cas en allemand; à propos de pointillé et non pointé i en turc.

Était-ce utile?

La solution

Remplacez les paires, si vous envisagez de les prendre en charge - y compris les combinaisons non valides (par exemple, une partie seulement).

Si vous procédez au codage et au décodage, assurez-vous de conserver un état suffisant pour pouvoir recevoir des blocs de données binaires à décoder de manière arbitraire, ce qui peut se terminer à mi-chemin d'un caractère, la moitié restante entrant dans le caractère suivant.

Autres conseils

Le test turc est le meilleur que je connaisse:)

Vous devriez imiter les implémentations des méthodes String et utiliser la bibliothèque principale pour le faire à votre place. Il est très difficile de prendre en compte tous les aspects possibles de chaque culture. Au lieu de réinventer la roue, utilisez le réflecteur sur les méthodes String et consultez les appels internes. Par exemple, String.Compare utilise CultureInfo.CurrentCulture.CompareInfo.Compare pour comparer 2 chaînes dans la culture actuelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top