Vraag TextInfo.ToTitleCase werkt niet zoals verwacht voor ALL CAPS-reeksen


Ik probeerde te gebruiken TextInfo.ToTitleCase om sommige namen naar de juiste naam te converteren. het werkt prima voor tekenreeksen in kleine letters en gemengde letters, maar voor reeksen met alle tekens in hoofdletters, wordt de ingevoerde tekenreeks als zodanig geretourneerd.
Niets over dit gedrag wordt genoemd in MSDN-documentatie, eventuele inzichten?


33
2018-04-23 08:38


oorsprong


antwoorden:


Van MSDN docs:

Opmerkingen   Over het algemeen converteert titelomhulling het eerste teken van een woord naar hoofdletters en de rest van de tekens naar kleine letters. Echter, deze methode biedt momenteel niet de juiste behuizing om een ​​woord volledig in hoofdletters te converteren, zoals een acroniem. De volgende tabel toont de manier waarop de methode meerdere reeksen maakt.

dus het verwachte gedrag. U kunt uw string eerst in kleine letters plaatsen als deze allemaal in hoofdletters staat en vervolgens ToTitleCase uitvoeren.


65
2018-04-23 08:44



Ik vermoed dat dit komt omdat woorden in alle hoofdletters naar verwachting afkortingen zijn, zoals de VS.

Je zou bijvoorbeeld niet verwachten dat "Aardbeving hits VS" worden veranderd in "Aardbeving Hits Usa" zou je?


7
2018-04-23 08:42



De MSDN-documentatie zegt:

Over het algemeen converteert titelomhulling het eerste teken van een woord naar hoofdletters en de rest van de tekens naar kleine letters. Een woord dat echter volledig in hoofdletters is, zoals een acroniem, wordt niet geconverteerd.

Dus het werkt zoals bedoeld. Proberen TextInfo.ToTitleCase(TextInfo.ToLowerCase("STRINGINCAPS")

graag willen:

string TitleCaseString;
TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
TitleCaseString = myTI.ToTitleCase(myTI.ToLowerCase("STRINGINCAPS"));

4
2018-04-23 08:42