[英]I am trying to convert a string from lower case to upper case and upper case to lower casee
在此處輸入圖像描述我正在嘗試將小寫轉換為大寫,將大寫轉換為小寫。我附上了一張圖片,請參考它並嘗試提供幫助。
public class Java {
public static void main(String[] args) {
String str = "Hey How Are you";
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
System.out.println(ch);
if (ch.equals(ch.toUpperCase())) {
String newChar = ch.toLowerCase();
System.out.print(newChar);
} else if (ch.equals(ch.toLowerCase())) {
String hey = ch.toUpperCase();
System.out.println(hey);
}
}
}
}
要檢查字符是大寫還是小寫,請使用 Wrapper class Character.isLowerCase()
public static void main(String[] args) {
String str = "Hey How Are you";
String newString = "";
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (Character.isUpperCase(ch)) {
ch = (char) (((int)ch) + 32);
} else if (Character.isLowerCase(ch)) {
ch = (char) (((int)ch) - 32);
}
newString += ch;
}
System.out.println(newString);
}
如果是ASCII,你可以通過翻轉區分大小寫字母的位來做到這一點。
String s = "This Is A Test.";
String ss = "";
for (char c : s.toCharArray()) {
if (Character.isLetter(c)) {
c ^= 0x20;
}
ss += c;
}
System.out.println(ss);
印刷
tHIS iS a tEST.
下面是它的工作原理。
ASCII 中大寫和小寫字母的區別在於其代碼中的一位。 例如。
Z -> 1011010
z -> 1111010
0100000 bit to flip
不同之處在於右邊的第 6 位。 這適用於所有 ASCII 字母。 所以你需要翻轉它的價值。 為此,您可以使用異或運算( ^
),它可以是 1 或 0 兩者都不是。 所以
1 ^ 1
是0
和0 ^ 1
是1
。
十六進制中的該位位於右側的0x20
處,因此您對該位置進行異或運算以僅翻轉該位。 具有0
位的異或運算使它們保持原樣。
當然你也可以這樣做,當然更容易理解。 它也適用於 ASCII 字符以外的字符。 這使用三元運算符(?:)來決定改變大小寫的方式。
ss = "";
for (char c : s.toCharArray()) {
if (Character.isLetter(c)) {
ss += Character.isLowerCase(c) ?
Character.toUpperCase(c) :
Character.toLowerCase(c);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.