Java 字符串常用方法

Java  toLowerCase()方法用于将字符串转为小写。

语法

字符串 toLowerCase() 方法的语法如下:

public String toLowerCase()
public String toLowerCase(Locale locale)

toLowerCase() 的第二种方法使用给定 Locale 的规则将所有字符转换为小写。

toLowerCase() 方法与 toLowerCase(Locale.getDefault()) 方法相同。它在内部使用默认语言环境。

返回值

转换后的小写字符串。

内部实现

public String toLowerCase(Locale locale) {
  if (locale == null) {
    throw new NullPointerException();
  }
  
  int firstUpper;
  final int len = value.length;
  
  /* Now check if there are any characters that need to be changed. */
  scan: {
    for (firstUpper = 0 ; firstUpper < len; ) {
      char c = value[firstUpper];
      if ((c >= Character.MIN_HIGH_SURROGATE)
      && (c <= Character.MAX_HIGH_SURROGATE)) {
        int supplChar = codePointAt(firstUpper);
        if (supplChar != Character.toLowerCase(supplChar)) {
          break scan;
        }
        firstUpper += Character.charCount(supplChar);
      } else {
        if (c != Character.toLowerCase(c)) {
          break scan;
        }
        firstUpper++;
      }
    }
    return this;
  }
  
  char[] result = new char[len];
  int resultOffset = 0;  /* result may grow, so i+resultOffset
  * is the write location in result */
  
  /* Just copy the first few lowerCase characters. */
  System.arraycopy(value, 0, result, 0, firstUpper);
  
  String lang = locale.getLanguage();
  boolean localeDependent =
  (lang == "tr" || lang == "az" || lang == "lt");
  char[] lowerCharArray;
  int lowerChar;
  int srcChar;
  int srcCount;
  for (int i = firstUpper; i < len; i += srcCount) {
    srcChar = (int)value[i];
    if ((char)srcChar >= Character.MIN_HIGH_SURROGATE
    && (char)srcChar <= Character.MAX_HIGH_SURROGATE) {
      srcChar = codePointAt(i);
      srcCount = Character.charCount(srcChar);
    } else {
      srcCount = 1;
    }
    if (localeDependent || srcChar == '\u03A3') { // 希腊大写字母 SIGMA
      lowerChar = ConditionalSpecialCasing.toLowerCaseEx(this, i, locale);
    } else if (srcChar == '\u0130') { // 拉丁文大写字母 I DOT
      lowerChar = Character.ERROR;
    } else {
      lowerChar = Character.toLowerCase(srcChar);
    }
    if ((lowerChar == Character.ERROR)
    || (lowerChar >= Character.MIN_SUPPLEMENTARY_CODE_POINT)) {
      if (lowerChar == Character.ERROR) {
        if (!localeDependent && srcChar == '\u0130') {
          lowerCharArray =
          ConditionalSpecialCasing.toLowerCaseCharArray(this, i, Locale.ENGLISH);
        } else {
          lowerCharArray =
          ConditionalSpecialCasing.toLowerCaseCharArray(this, i, locale);
        }
      } else if (srcCount == 2) {
        resultOffset += Character.toChars(lowerChar, result, i + resultOffset) - srcCount;
        continue;
      } else {
        lowerCharArray = Character.toChars(lowerChar);
      }
      
      /* Grow result if needed */
      int mapLen = lowerCharArray.length;
      if (mapLen > srcCount) {
        char[] result2 = new char[result.length + mapLen - srcCount];
        System.arraycopy(result, 0, result2, 0, i + resultOffset);
        result = result2;
      }
      for (int x = 0; x < mapLen; ++x) {
        result[i + resultOffset + x] = lowerCharArray[x];
      }
      resultOffset += (mapLen - srcCount);
    } else {
      result[i + resultOffset] = (char)lowerChar;
    }
  }
  return new String(result, 0, len + resultOffset);
}

示例1

public class StringLowerExample{
  public static void main(String args[]){
    String s1="YXJC123 HELLO stRIng";
    String s1lower=s1.toLowerCase();
    System.out.println(s1lower);
  }
}

输出:

yxjc123 hello string

示例2

设置第二个参数的例子。让我们看看下面的例子,我们得到了英语和土耳其语的字符串。

import java.util.Locale;
public class StringLowerExample2 {
  public static void main(String[] args) {
    String s = "YXJC123 HELLO stRIng";
    String eng = s.toLowerCase(Locale.ENGLISH);
    System.out.println(eng);
    String turkish = s.toLowerCase(Locale.forLanguageTag("tr")); // 它显示没有点的 i
    System.out.println(turkish);
  }
}

输出:

yxjc123 hello string
yxjc123 hello strıng