Java初心者の競技プログラミング日記

Dvorak配列でjavaを書いてます

大文字と小文字を逆転させるメソッド

英語アルファベットのみで構成される文字列の、大文字と小文字を逆転させるメソッド。

static String CaseReverse (String s) {
	StringBuilder sb = new StringBuilder();
	for (int i=0; i<s.length(); i++) {
		char c = s.charAt(i);
		if (Character.isUpperCase(c)) {
			c += 32;
			sb.append(c);
		}
		else {
			c -= 32;
			sb.append(c);
		}
	}
	return sb.toString();
}


Character.isUpperCase(c)の部分は、cが大文字ならtrue、cが小文字でならfalseを返す。

toUpperCase(),toLowerCase()を使って変換してもよかったのだが、こちらのほうがなんとなく処理が速そうなので、charの値を足し引きすることによって大文字と小文字を逆転させるようにした。

ASCII文字コードでは、大文字のAが65、小文字のaが97となっているので、小文字から32を引けば大文字になり、大文字に32を足せば小文字になる。

Character.isUpperCase()を使わない場合は、cの値が65~90(大文字)であれば32を足す、97~122であれば32を引くというふうに、cの範囲で条件分岐させる。

文字列に半角スペース(" ")や各種記号("-","?","!")が含まれている場合はエラーが発生するので、それらの文字をスルーしたい場合はここに条件分岐を付け加える。