Преобразование букв в нижний регистр без toLowerCase () - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь преобразовать буквы в нижний регистр, и я использую цикл for и без использования .tolowerCase. Я не уверен, но это не работает ... Вот мой код ..

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String a1 = "apple";
    char[] s1 = a1.toCharArray();  

    for (int i=0; i<s1.length; i++)
    {
        int CharNumber = s1[i] - 'a';
        int NewChar = (char) CharNumber;
        char[] NewNew = Character.toChars(NewChar);
        System.out.println(NewNew);

    }

}

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

Нашел эффективный подход, который мог бы помочь. Пожалуйста, отсылайте это http://www.java2s.com/Code/Java/Data-Type/RewrotethetoLowercasemethodtoimproveperformances.htm

public class Main {

  private static final char[] LOWER_CASE =
      { 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0, '-',   0,   0, 
          '0', '1', '2', '3', '4', '5', '6', '7', 
          '8', '9',   0,   0,   0,   0,   0,   0, 
            0, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 
          'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 
          'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 
          'x', 'y', 'z',   0,   0,   0,   0,   0, 
            0, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 
          'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 
          'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 
          'x', 'y', 'z',   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0, 
            0,   0,   0,   0,   0,   0,   0,   0 
      };

  public static final String toLowerCase( String value )
  {
      char[] chars = value.toCharArray();

      for ( int i = 0; i < chars.length; i++ )
      {
          chars[i] = LOWER_CASE[ chars[i]];
      }

      return new String( chars );
  }

}
0 голосов
/ 30 апреля 2018

Это должно работать:

     private static String  toLowerCase(String inputWord)
          { 

        StringBuilder inputW = new StringBuilder(inputWord);

        for(int i = 0 ; i < inputW.length() ; i++)
            { 
         // check for Capital  letter ...   ascii code of "A" is 65 ... "Z" is 91.
            if(inputW.charAt(i) >= 65 && inputW.charAt(i) <=91)   
                {
                 //   The character at the specified index is set to  to uppercase
                    inputW.setCharAt(i, (char)(inputW.charAt(i)+32));    
                }
        }
        return inputW.toString();
    }
0 голосов
/ 30 апреля 2018

Вы можете просто рассматривать каждый символ как целое число и добавлять 32 к любому символу, у которого целочисленное значение ASCII будет меньше или равно 90. Это преобразует прописные буквы в строчные, оставляя строчные буквы такими, как они были.

String a1 = "aPplE";
char[] s1 = a1.toCharArray();
int diff = 'a' - 'A';

for (int i=0; i < s1.length; i++) {
    if (s1[i] >= 'A' && s1[i] <= 'Z') {
        s1[i] += diff;
    }
}

System.out.println(s1);

apple

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...