Converting a char to uppercase

前端 未结 10 626
南方客
南方客 2020-12-02 09:48
String lower = Name.toLowerCase();
int a = Name.indexOf(\" \",0);
String first = lower.substring(0, a);
String last = lower.substring(a+1);
char f = first.charAt(0);         


        
相关标签:
10条回答
  • 2020-12-02 10:05

    Have a look at the java.lang.Character class, it provides a lot of useful methods to convert or test chars.

    0 讨论(0)
  • 2020-12-02 10:05

    Since you know the chars are lower case, you can subtract the according ASCII value to make them uppercase:

    char a = 'a';
    a -= 32;
    System.out.println("a is " + a); //a is A
    

    Here is an ASCII table for reference

    0 讨论(0)
  • 2020-12-02 10:06

    You can use Character#toUpperCase() for this.

    char fUpper = Character.toUpperCase(f);
    char lUpper = Character.toUpperCase(l);
    

    It has however some limitations since the world is aware of many more characters than can ever fit in 16bit char range. See also the following excerpt of the javadoc:

    Note: This method cannot handle supplementary characters. To support all Unicode characters, including supplementary characters, use the toUpperCase(int) method.

    0 讨论(0)
  • 2020-12-02 10:08
    System.out.println(first.substring(0,1).toUpperCase()); 
    System.out.println(last.substring(0,1).toUpperCase());
    
    0 讨论(0)
  • 2020-12-02 10:10

    I think you are trying to capitalize first and last character of each word in a sentence with space as delimiter.

    Can be done through StringBuffer:

    public static String toFirstLastCharUpperAll(String string){
        StringBuffer sb=new StringBuffer(string);
            for(int i=0;i<sb.length();i++)
                if(i==0 || sb.charAt(i-1)==' ' //for first character of string/each word
                    || i==sb.length()-1 || sb.charAt(i+1)==' ') //for last character of string/each word
                    sb.setCharAt(i, Character.toUpperCase(sb.charAt(i)));
         return sb.toString();
    }
    
    0 讨论(0)
  • 2020-12-02 10:13

    Instead of using existing utilities, you may try below conversion using boolean operation:

    To upper case:

     char upperChar = 'l' & 0x5f
    

    To lower case:

       char lowerChar = 'L' ^ 0x20
    

    How it works:

    Binary, hex and decimal table:

    ------------------------------------------
    | Binary   |   Hexadecimal     | Decimal |
    -----------------------------------------
    | 1011111  |    0x5f           |  95     |
    ------------------------------------------
    | 100000   |    0x20           |  32     |
    ------------------------------------------
    

    Let's take an example of small l to L conversion:

    The binary AND operation: (l & 0x5f)

    l character has ASCII 108 and 01101100 is binary represenation.

       1101100
    &  1011111
    -----------
       1001100 = 76 in decimal which is **ASCII** code of L
    

    Similarly the L to l conversion:

    The binary XOR operation: (L ^ 0x20)

       1001100
    ^  0100000
    -----------
       1101100 = 108 in decimal which is **ASCII** code of l
    
    0 讨论(0)
提交回复
热议问题