すべての大文字が小文字になり、すべての小文字が大文字になるように String を変更したいと考えています。数字は単に無視されます。
したがって、「AbCdE123」は「aBcDe123」になります。
文字列を反復処理して各文字を反転する方法、またはそれを実行できる正規表現が必要だと思います。
すべての大文字が小文字になり、すべての小文字が大文字になるように String を変更したいと考えています。数字は単に無視されます。
したがって、「AbCdE123」は「aBcDe123」になります。
文字列を反復処理して各文字を反転する方法、またはそれを実行できる正規表現が必要だと思います。
Apache Commons StringUtils にはswapCaseメソッドがあります。
これを行うための組み込み機能はないと思います (比較的珍しいことです)。ただし、これでうまくいくはずです:
public static String reverseCase(String text)
{
char[] chars = text.toCharArray();
for (int i = 0; i < chars.length; i++)
{
char c = chars[i];
if (Character.isUpperCase(c))
{
chars[i] = Character.toLowerCase(c);
}
else if (Character.isLowerCase(c))
{
chars[i] = Character.toUpperCase(c);
}
}
return new String(chars);
}
これは、String.toUpperCase/String.toLowerCase が行うロケール固有の変更を行わないことに注意してください。また、BMP 以外の文字も処理しません。
文字列を反復処理して各文字を反転する方法が必要だと思います
正しい。java.lang.Character
クラスは、そのための各メソッドを提供しますisUpperCase()
。それをテストし、結果に応じてtoLowerCase()
またはメソッドを使用します。toUpperCase()
それぞれの結果を a に追加StringBuilder
すれば問題ありません。
Faraz のアプローチに基づいて、文字変換は次のように簡単にできると思います。
t += Character.isUpperCase(c) ? Character.toLowerCase(c) : Character.toUpperCase(c);
指定されたスレッドが非常に古いことは認識していますが、それを解決するより良い方法があります。
class Toggle
{
public static void main()
{
String str = "This is a String";
String t = "";
for (int x = 0; x < str.length(); x++)
{
char c = str.charAt(x);
boolean check = Character.isUpperCase(c);
if (check == true)
t = t + Character.toLowerCase(c);
else
t = t + Character.toUpperCase(c);
}
System.out.println (t);
}
}