[java] Java에서 문자열의 첫 글자를 대문자로 바꾸는 방법은 무엇입니까?

Java를 사용 String하여 사용자로부터 입력을 받고 있습니다. 이 입력의 첫 글자를 대문자로 만들려고합니다.

나는 이것을 시도했다 :

String name;

BufferedReader br = new InputStreamReader(System.in);

String s1 = name.charAt(0).toUppercase());

System.out.println(s1 + name.substring(1));

이 컴파일러 오류가 발생했습니다 :

  • 유형 불일치 : InputStreamReader에서 BufferedReader로 변환 할 수 없습니다

  • 기본 유형 char에서 toUppercase ()를 호출 할 수 없습니다.



답변

String str = "java";
String cap = str.substring(0, 1).toUpperCase() + str.substring(1);
// cap = "Java"

예를 들면 다음과 같습니다.

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    // Actually use the Reader
    String name = br.readLine();
    // Don't mistake String object with a Character object
    String s1 = name.substring(0, 1).toUpperCase();
    String nameCapitalized = s1 + name.substring(1);
    System.out.println(nameCapitalized);
}


답변


답변

문자열의 첫 글자를 대문자로하는 더 짧고 빠른 버전 코드는 다음과 같습니다.

String name  = "stackoverflow";
name = name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase();

의 가치 name"Stackoverflow"


답변

Apache의 공통 라이브러리를 사용하십시오. 이러한 것들로부터 당신의 두뇌를 해방하고 Null Pointer & Index Out of Bound 예외를 피하십시오

1 단계:

build.gradle의존성 을 두어 Apache의 공통 lang 라이브러리를 가져옵니다.

compile 'org.apache.commons:commons-lang3:3.6'

2 단계:

문자열이 모두 소문자인지 확실하거나 첫 글자를 초기화하는 것만 필요하면 직접 전화하십시오.

StringUtils.capitalize(yourString);

당신은 단지 첫 번째 문자가이 일을 같이 대문자로되어 있는지 확인하려면 enum전화 toLowerCase()먼저하고 던질 것이다 것을 명심 NullPointerException입력 문자열이 null 인 경우.

StringUtils.capitalize(YourEnum.STUFF.name().toLowerCase());
StringUtils.capitalize(yourString.toLowerCase());

아파치에서 제공하는 더 많은 샘플이 있습니다. 예외가 없습니다

StringUtils.capitalize(null)  = null
StringUtils.capitalize("")    = ""
StringUtils.capitalize("cat") = "Cat"
StringUtils.capitalize("cAt") = "CAt"
StringUtils.capitalize("'cat'") = "'cat'"

노트 :

WordUtils이 라이브러리에도 포함되어 있지만 더 이상 사용되지 않습니다. 제발 하지 않는 것을 사용합니다.


답변

자바:

모든 문자열을 대문자로하는 도우미 메소드 일뿐입니다.

public static String capitalize(String str)
{
    if(str == null) return str;
    return str.substring(0, 1).toUpperCase() + str.substring(1);
}

그 후 단순히 전화 str = capitalize(str)


코 틀린 :

str.capitalize()


답변

당신이하고 싶은 것은 아마도 이것입니다 :

s1 = name.substring(0, 1).toUpperCase() + name.substring(1);

(첫 번째 문자를 대문자로 변환하고 원래 문자열의 나머지를 추가합니다)

또한 입력 스트림 리더를 작성하지만 행을 읽지 마십시오. 따라서 name항상 있습니다 null.

이것은 작동해야합니다 :

BufferedReader br = new InputstreamReader(System.in);
String name = br.readLine();
String s1 = name.substring(0, 1).toUpperCase() + name.substring(1);


답변