簡體   English   中英

我正在嘗試將字符串從小寫轉換為大寫,將大寫轉換為小寫

[英]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 ^ 100 ^ 11

十六進制中的該位位於右側的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM