это может казаться простым, но это отряды много ошибок я попробовал этот путь:
String s = gameList[0].toString();
s.replaceFirst(String.valueOf(s.charAt(0)),String.valueOf(Character.toUpperCase(s.charAt(0))) );
и это выдает исключение
другая попытка, которую я имел, была:
String s = gameList[0].toString();
char c = Character.toUpperCase(gameList[0].charAt(0));
gameList[0] = s.subSequence(1, s.length());
rhis каждый также выдает Исключение
/**
* returns the string, the first char lowercase
*
* @param target
* @return
*/
public final static String asLowerCaseFirstChar(final String target) {
if ((target == null) || (target.length() == 0)) {
return target; // You could omit this check and simply live with an
// exception if you like
}
return Character.toLowerCase(target.charAt(0))
+ (target.length() > 1 ? target.substring(1) : "");
}
/**
* returns the string, the first char uppercase
*
* @param target
* @return
*/
public final static String asUpperCaseFirstChar(final String target) {
if ((target == null) || (target.length() == 0)) {
return target; // You could omit this check and simply live with an
// exception if you like
}
return Character.toUpperCase(target.charAt(0))
+ (target.length() > 1 ? target.substring(1) : "");
}
По поводу вашей первой попытки:
String s = gameList[0].toString();
s.replaceFirst(...);
Строки Java неизменяемы. Вы не можете вызвать метод на экземпляре строки и ожидать, что метод изменит эту строку. replaceFirst
вместо этого возвращает новую строку. Это означает, что такое использование неверно:
s1.trim();
s2.replace("x", "y");
Вместо этого вы захотите сделать что-то вроде этого:
s1 = s1.trim();
s2 = s2.replace("x", "y");
Что касается изменения первой буквы CharSequence
на прописную, то работает что-то вроде этого (как показано на ideone.com):
static public CharSequence upperFirst(CharSequence s) {
if (s.length() == 0) {
return s;
} else {
return Character.toUpperCase(s.charAt(0))
+ s.subSequence(1, s.length()).toString();
}
}
public static void main(String[] args) {
String[] tests = {
"xyz", "123 abc", "x", ""
};
for (String s : tests) {
System.out.printf("[%s]->[%s]%n", s, upperFirst(s));
}
// [xyz]->[Xyz]
// [123 abc]->[123 abc]
// [x]->[X]
// []->[]
StringBuilder sb = new StringBuilder("blah");
System.out.println(upperFirst(sb));
// prints "Blah"
}
Это, конечно, вызовет NullPointerException
, если s == null
. Часто такое поведение является правильным.