Domanda

Sto arrivando all'ultima fase della mia implementazione (una versione più scalabile dell'implementazione di String ). Ovviamente, voglio che tutte le operazioni forniscano lo stesso risultato delle operazioni su String ogni volta che sia possibile.

Farlo per le operazioni ordinali è piuttosto semplice, ma sono preoccupato di implementare correttamente le operazioni sensibili alla cultura. Soprattutto perché conosco solo due lingue e in entrambe le operazioni sensibili alla cultura si comportano esattamente come le operazioni ordinali!

Quindi ci sono cose specifiche che potrei testare e almeno avere la certezza che sto facendo le cose correttamente? So, ad esempio, che ß è uguale a SS quando ignora i casi in tedesco; su punteggiato e non notato in turco.

È stato utile?

Soluzione

Coppie surrogate, se prevedi di supportarle, incluse combinazioni non valide (ad esempio solo una parte di una).

Se stai eseguendo la codifica e la decodifica, assicurati di mantenere uno stato sufficiente per far fronte a blocchi arbitrari di dati binari che possono essere decodificati, il che può finire a metà di un carattere, con la metà rimanente nel carattere successivo.

Altri suggerimenti

Il test turco è il migliore che conosca :)

Dovresti imitare le implementazioni dei metodi String e usare la libreria principale per farlo. È molto difficile tenere conto di ogni possibile aspetto di ogni cultura. Invece di reinventare la ruota, usa il riflettore sui metodi String e guarda le chiamate interne. Ad esempio String.Compare utilizza CultureInfo.CurrentCulture.CompareInfo.Compare per confrontare 2 stringhe nella cultura corrente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top