Я хочу перетворити перший символ рядка у верхній регістр, а решту символів - у нижній регістр. Як я можу це зробити?
Приклад:
String inputval="ABCb" OR "a123BC_DET" or "aBcd"
String outputval="Abcb" or "A123bc_det" or "Abcd"
Відповіді:
Спробуйте це для розміру:
String properCase (String inputVal) {
// Empty strings should be returned as-is.
if (inputVal.length() == 0) return "";
// Strings with only one character uppercased.
if (inputVal.length() == 1) return inputVal.toUpperCase();
// Otherwise uppercase first letter, lowercase the rest.
return inputVal.substring(0,1).toUpperCase()
+ inputVal.substring(1).toLowerCase();
}
В основному він обробляє спеціальні випадки порожнього і односимвольного рядка спочатку, а в іншому випадку правильно використовує рядок із двома символами. І, як зазначено в коментарі, односимвольний особливий випадок не потрібен для функціональності, але я все одно вважаю за краще бути явним, особливо якщо це призводить до меншої кількості марних дзвінків, таких як підрядок, щоб отримати порожній рядок, нижній регістр його, а потім додавши його також.
String a = "ABCD"
використовуючи це
a.toLowerCase();
всі літери будуть перетворені в прості, "abcd",
використовуючи це
a.toUpperCase()
усі літери будуть перетворені на великі, "ABCD"
це перетворює першу літеру у велику:
a.substring(0,1).toUpperCase()
це перетворити іншу букву Simple
a.substring(1).toLowerCase();
ми можемо отримати суму цих двох
a.substring(0,1).toUpperCase() + a.substring(1).toLowerCase();
result = "Abcd"
WordUtils.capitalizeFully(str)від apache commons-lang має точну семантику, як потрібно.
Я вважаю це простішим, ніж будь-яка попередня правильна відповідь. Я також кину явадок. :-)
/**
* Converts the given string to title case, where the first
* letter is capitalized and the rest of the string is in
* lower case.
*
* @param s a string with unknown capitalization
* @return a title-case version of the string
*/
public static String toTitleCase(String s)
{
if (s.isEmpty())
{
return s;
}
return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
}
Рядки довжиною 1 не потрібно розглядати як особливий випадок, оскільки s.substring(1)повертає порожній рядок, коли sмає довжину 1.
/* This code is just for convert a single uppercase character to lowercase
character & vice versa.................*/
/* This code is made without java library function, and also uses run time input...*/
import java.util.Scanner;
class CaseConvert {
char c;
void input(){
//@SuppressWarnings("resource") //only eclipse users..
Scanner in =new Scanner(System.in); //for Run time input
System.out.print("\n Enter Any Character :");
c=in.next().charAt(0); // input a single character
}
void convert(){
if(c>=65 && c<=90){
c=(char) (c+32);
System.out.print("Converted to Lowercase :"+c);
}
else if(c>=97&&c<=122){
c=(char) (c-32);
System.out.print("Converted to Uppercase :"+c);
}
else
System.out.println("invalid Character Entered :" +c);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
CaseConvert obj=new CaseConvert();
obj.input();
obj.convert();
}
}
/*OUTPUT..Enter Any Character :A Converted to Lowercase :a
Enter Any Character :a Converted to Uppercase :A
Enter Any Character :+invalid Character Entered :+*/