Stavo cercando di utilizzare TextInfo.ToTitleCase
per convertire alcuni nomi nel caso corretto. funziona bene per le stringhe in lettere minuscole e miste ma per le stringhe con tutti i caratteri in maiuscolo, restituisce la stringa di input così com'è.
Nulla su questo comportamento è menzionato nella documentazione MSDN, eventuali approfondimenti?TextInfo.ToTitleCase non funziona come previsto per le stringhe ALL CAPS
risposta
Da MSDN docs:
Osservazione In generale, involucro titolo converte il primo carattere di una parola in maiuscolo e il resto dei personaggi in minuscolo. Tuttavia, , questo metodo non fornisce attualmente l'involucro corretto per convertire una parola interamente maiuscola, ad esempio un acronimo. La seguente tabella mostra il modo in cui il metodo esegue il rendering di più stringhe.
quindi è il comportamento previsto. Potresti mettere in minuscolo la stringa prima se è tutto in maiuscolo, quindi eseguire ToTitleCase su di essa.
Ho il sospetto che sia perché le parole in tutte le capitali sono le abbreviazioni come gli Stati Uniti.
Ad esempio, non ci si aspetterebbe che "Terremoti colpiti USA" vengano modificati in "Terremoti colpiti negli Usa", vero?
Questo è un bug allora. Unicode specifica "USA" -> "Usa". Modifica: OK, non un bug, come menzionato nei documenti, ma comportamento sorprendente. – leppie
La documentazione MSDN dice:
In generale, involucro titolo converte il primo carattere di una parola in maiuscolo e il resto dei personaggi in minuscolo. Tuttavia, una parola interamente maiuscola, ad esempio un acronimo, non viene convertita.
Quindi funziona come previsto. Prova TextInfo.ToTitleCase(TextInfo.ToLowerCase("STRINGINCAPS")
come:
string TitleCaseString;
TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
TitleCaseString = myTI.ToTitleCase(myTI.ToLowerCase("STRINGINCAPS"));
Dovrei aggiungere la dicitura modificata in .net 3.5 e non è chiaro riguardo a questo fatto. – Kobi
- 1. StrUtils.SplitString non funziona come previsto
- 2. Time.use_zone non funziona come previsto
- 3. @AfterThrowing non funziona come previsto
- 4. jQuery.inArray() non funziona come previsto
- 5. e.stopPropagation() non funziona come previsto?
- 6. nubBy non funziona come previsto
- 7. raggiungibilità non funziona come previsto
- 8. pigrizia non funziona come previsto
- 9. chrome.runtime.sendMessage non funziona come previsto
- 10. kendo.ui.progress non funziona come previsto
- 11. DateTime.AddDays() non funziona come previsto
- 12. infine non funziona come previsto
- 13. SimpleDateFormat non funziona come previsto
- 14. TagBuilder.MergeAttributes non funziona come previsto
- 15. Perché angular.isNumber() non funziona come previsto?
- 16. non #ifdef funziona come previsto con le intestazioni precompilate
- 17. CSS word-wrap non funziona come previsto
- 18. jQuery $ (finestra) .load non funziona come previsto
- 19. Javascript DataTable - filtro() non funziona come previsto
- 20. Nginx proxy_ssl_certificate non funziona come previsto
- 21. Altezza finestra = "Auto" non funziona come previsto
- 22. setContentType ("text/html") per JTextPane non funziona come previsto
- 23. .split() non funziona come previsto in IE8
- 24. jQuery fadeOut/fadeIn non funziona come previsto?
- 25. CATextLayer iOS avvolto non funziona come previsto
- 26. match_parent che non funziona come previsto
- 27. Razor View IsAuthenticated non funziona come previsto
- 28. OpenGL gluLookAt() non funziona come previsto
- 29. UIImage resizableImageWithCapInsets: non funziona come previsto
- 30. Perché questo ciclo non funziona come previsto?
Hai ragione, l'ho perso mentre leggevo la documentazione. –
@Nims - Nella tua tardiva difesa, i documenti [attuali] non dicono che ToTitleCase non eseguirà lo squat a maiuscole. La mia prima impressione è stata che non avrebbe ignorato * maiuscole e avrebbe comunque avuto il titolo. Ops. 'textInfo.ToTitleCase (strAllCaps.ToLower())' lo è. – ruffin
La documentazione corrente dice anche "Ci riserviamo il diritto di rendere questa API più lenta in futuro." Devo amare Microsoft! (: – chessofnerd