Quali sono i motivi per non utilizzare "==" per confrontare stringhe localizzate in .NET? Come si esegue il confronto in merito a CultureInfo se lo uso?Devo usare "==" per confronti di stringhe localizzate .NET?
risposta
==
è insensibile alla cultura: è un semplice confronto ordinale. Quindi due stringhe che sono culturalmente uguali - o addirittura uguali in termini di altre forme di canonizzazione - possono non essere uguali via ==
. In pratica tratta ogni stringa come un array char
.
Il sovraccarico String.operator ==
eseguirà un confronto ordinale cultura-inconsapevole – confronta le stringhe byte per byte utilizzando un heavily optimized unrolled loop.
Si chiama la stessa funzione interna String.Equals(a, b, StringComparison.Ordinal)
Se si confrontano le stringhe cultura-aware con ==, ad esempio "Strasse" con "Straße", restituisce false.
Se sono necessari confronti compatibili con la cultura per elementi dell'interfaccia utente (ordinamento di Listview), si utilizza String.Compare con CultureInfo correlato.
CultureInfo ci = new CultureInfo("de-DE");
String.Compare("Strasse", "Straße", true, ci) // Returns zero
+1 per l'esempio. – Otiel
- 1. Trova stringhe di Windows localizzate
- 2. Ottenere stringhe localizzate per DayOfWeek valori
- 3. Esiste un modo migliore per gestire le stringhe localizzate?
- 4. Come formattare le stringhe localizzate in Swift?
- 5. Come includere le variabili nelle stringhe localizzate?
- 6. strcmp() restituisce valori diversi per gli stessi confronti di stringhe
- 7. Devo usare sempre TryGetValue per accedere ai dizionari .net?
- 8. Cosa devo usare per una classe BigInt in .NET?
- 9. Devo usare _T o _TEXT su stringhe di stringa C++?
- 10. Analisi di stringhe di data localizzate in PHP
- 11. Java. Ignora gli accenti quando confronti stringhe
- 12. Perché devo usare [ProtoInclude]?
- 13. Devo salvare le stringhe restituite da NSLocalizedString()?
- 14. MessageFormat in javascript (parametri nelle stringhe UI localizzate)
- 15. Devo usare promessa per mkdir
- 16. Devo usare la stringa Unicode per impostazione predefinita?
- 17. confronti maiuscole/insensibili per Data.Text?
- 18. Stringhe a più righe nel file di stringhe localizzate ogg-c
- 19. Devo usare FxCop e perché?
- 20. Devo usare Bootstrap?
- 21. Devo usare ProGuard?
- 22. Devo usare jQuery.each()?
- 23. Buffer del protocollo: Devo usare int64 o fixed64 per rappresentare un valore di DateTime .NET?
- 24. Devo usare chiavi esterne?
- 25. Devo usare jQuery.inArray()?
- 26. Devo usare un framework?
- 27. Quale CursorAdapter devo usare?
- 28. Devo usare GeoDjango per mappare una planimetria?
- 29. Devo usare Frammenti per ottenere un LoaderManager?
- 30. Devo usare Mako per il Templating?
Stai chiedendo l'operatore C# '=='? Se è così, dovresti aggiungere il tag C#. – phoog