Java 字符串常用方法

Java 字符串toUpperCase()方法用于将字符串转为大写。

语法

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

public String toUpperCase()
public String toUpperCase(Locale locale)

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

toUpperCase() 方法的工作原理与 toUpperCase(Locale.getDefault()) 方法相同。它在内部使用默认语言环境。

返回值

转换后的大写字符串。

内部实现

public String toUpperCase(Locale locale) {
  if (locale == null) {
    throw new NullPointerException();
  }
  
  int firstLower;
  final int len = value.length;
  
  /* Now check if there are any characters that need to be changed. */
  scan: {
    for (firstLower = 0 ; firstLower < len; ) {
      int c = (int)value[firstLower];
      int srcCount;
      if ((c >= Character.MIN_HIGH_SURROGATE)
      && (c <= Character.MAX_HIGH_SURROGATE)) {
        c = codePointAt(firstLower);
        srcCount = Character.charCount(c);
      } else {
        srcCount = 1;
      }
      int upperCaseChar = Character.toUpperCaseEx(c);
      if ((upperCaseChar == Character.ERROR)
      || (c != upperCaseChar)) {
        break scan;
      }
      firstLower += srcCount;
    }
    return this;
  }
  
  char[] result = new char[len]; /* may grow */
  int resultOffset = 0;  /* result may grow, so i+resultOffset
  * is the write location in result */
  
  /* Just copy the first few upperCase characters. */
  System.arraycopy(value, 0, result, 0, firstLower);
  
  String lang = locale.getLanguage();
  boolean localeDependent =
  (lang == "tr" || lang == "az" || lang == "lt");
  char[] upperCharArray;
  int upperChar;
  int srcChar;
  int srcCount;
  for (int i = firstLower; 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) {
      upperChar = ConditionalSpecialCasing.toUpperCaseEx(this, i, locale);
    } else {
      upperChar = Character.toUpperCaseEx(srcChar);
    }
    if ((upperChar == Character.ERROR)
    || (upperChar >= Character.MIN_SUPPLEMENTARY_CODE_POINT)) {
      if (upperChar == Character.ERROR) {
        if (localeDependent) {
          upperCharArray =
          ConditionalSpecialCasing.toUpperCaseCharArray(this, i, locale);
        } else {
          upperCharArray = Character.toUpperCaseCharArray(srcChar);
        }
      } else if (srcCount == 2) {
        resultOffset += Character.toChars(upperChar, result, i + resultOffset) - srcCount;
        continue;
      } else {
        upperCharArray = Character.toChars(upperChar);
      }
      
      /* Grow result if needed */
      int mapLen = upperCharArray.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] = upperCharArray[x];
      }
      resultOffset += (mapLen - srcCount);
    } else {
      result[i + resultOffset] = (char)upperChar;
    }
  }
  return new String(result, 0, len + resultOffset);
}

示例1

public class StringUpperExample{
  public static void main(String args[]){
    String s1="hello string";
    String s1upper=s1.toUpperCase();
    System.out.println(s1upper);
  }
}

输出:

HELLO STRING

示例2

import java.util.Locale;
public class StringUpperExample2 {
  public static void main(String[] args) {
    String s = "hello string";
    String turkish = s.toUpperCase(Locale.forLanguageTag("tr"));
    String english = s.toUpperCase(Locale.forLanguageTag("en"));
    System.out.println(turkish);//将打印I,上面有点
    System.out.println(english);
  }
}

输出:

HELLO STRİNG
HELLO STRING