文字列が不変であることについて
あなたの最初の試みについて:
String s = gameList[0].toString();
s.replaceFirst(...);
Java 文字列は不変です。文字列インスタンスでメソッドを呼び出して、メソッドがその文字列を変更することを期待することはできません。代わりに新しいreplaceFirst
文字列を返します。これは、これらの種類の使用法が間違っていることを意味します。
s1.trim();
s2.replace("x", "y");
代わりに、次のようなことをしたいと思うでしょう:
s1 = s1.trim();
s2 = s2.replace("x", "y");
a の最初の文字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
ifをスローしますs == null
。多くの場合、これは適切な動作です。