On String неизменна
Относительно вашей первой попытки:
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
.Это часто является подходящим поведением.