I am wondering that why Character.toUpperCase/toLowerCase
has no Locale parameter like String.toUpperCase/toLowerCase
.
I have to first uppercase of a text that can be in Any language. I have 2 solutions:
Use Character.toUpperCase
String text = "stack overflow";
StringBuilder sb = new StringBuilder(text);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0))); // No Locale parameter here.
String out = sb.toString(); //Out: Stack overflow
Use String.toUpperCase
Locale myLocale = new Locale(locateId);
String text = "stack overflow";
String text1 = text.substring(0,1).toUpperCase(myLocale );
String text2 = text.substring(1);
String out = text1 + text2; // Out: Stack overflow
For my Locale. Both way has the same result.
My question is:
Since the text can be in any language. Which way should I use?
Why Character.toUpperCase/toLowerCase
has no Locale parameter because there is not much difference between Character.toUpperCase/toLowerCase
and String.toUpperCase/toLowerCase
because String is array of Characters.
From the Character#toUpperCase(int)
Javadoc,
In general,
String.toUpperCase()
should be used to map characters to uppercase.String
case mapping methods have several benefits overCharacter
case mapping methods.String
case mapping methods can perform locale-sensitive mappings, context-sensitive mappings, and 1:M character mappings, whereas theCharacter
case mapping methods cannot.
So, the answer is your second example (String.toUpperCase
)