2010-12-15 3 views

답변

101

s 가정하면 비 비어 :

Character.isUpperCase(s.codePointAt(0)); 
5

할 수있는 많은 방법이있다 :

Character.isUpperCase(s.charAt(0)) 

또는 divec에서 언급 한 바와 같이,이 U+FFFF 위의 코드 포인트와 문자를 작동하도록 그 중 가장 단순한 것으로 보이는 것은 다음과 같습니다.

boolean isUpperCase = Character.isUpperCase("My String".charAt(0)); 
0

수작업으로 직접 확인해야합니다. int a = s.charAt(0)

65 ~ 90 사이의 값은 대문자입니다.

+1

비 ASCII 문자는 어떤가요? – vitaut

+0

@vitaut 당신은 ascii 문자 코드 처리만을위한 것이라고 정답입니다. –

35

사실, 이것은보기보다 미묘합니다.

위의 코드는 U + FFFF (예 : U + 1D4C3, MATHEMATICAL SCRIPT SMALL N)를 초과하는 소문자에 대해 잘못된 대답을 제공합니다. String.charAt는 UTF-16 서로 게이트 쌍을 반환합니다.이 쌍은 문자가 아닌 문자의 절반이므로 말할 수 있습니다. 따라서 String.codePointAt를 사용해야하는데, 이는 0xFFFF (char가 아닌) 이상의 int를 반환합니다. 당신은 할 것 :

Character.isUpperCase(s.codePointAt(0));

나쁜이 간과 생각하지 마십시오 대부분의 Java 코더는 UTF-16을 잘못 처리합니다. 왜냐하면이 용어는 각 "문자"값이 문자를 나타내는 것이라고 오해하게 만듭니다. UTF-16은 거의 고정 된 너비이지만 상당히 빠르기 때문에 짜증납니다. 따라서 고정 폭이 아닌 가장자리 케이스는 테스트하지 않는 경향이 있습니다. 언젠가는 U + 1D4C3과 같은 문자가 들어있는 문서가 나오고 전체 시스템이 폭발적입니다.

0
String yourString = "yadayada"; 
if (Character.isUpperCase(yourString.charAt(0))) { 
    // print something 
} else { 
    // print something else 
} 
1

우리는 구체적인 예를 들어뿐만 아니라

private static void findUppercaseFirstLetterInString(String content) { 
    Matcher m = Pattern 
      .compile("([a-z])([a-z]*)", Pattern.CASE_INSENSITIVE).matcher(
        content); 
    System.out.println("Given input string : " + content); 
    while (m.find()) { 
     if (m.group(1).equals(m.group(1).toUpperCase())) { 
      System.out.println("First Letter Upper case match found :" 
        + m.group()); 
     } 
    } 
} 

정규 표현식을 사용하여 대문자를 찾을 수 있습니다. http://www.onlinecodegeek.com/2015/09/how-to-determines-if-string-starts-with.html

1

문자열이 비어 있는지 또는 null인지 확인하는 것을 잊지 마십시오. null 또는 비어있는 것을 잊어 버린 경우 주어진 문자열이 null이거나 비어 있으면 NullPointerException 또는 StringIndexOutOfBoundException이됩니다.

public class StartWithUpperCase{ 

     public static void main(String[] args){ 

      String str1 = ""; //StringIndexOfBoundException if 
           //empty checking not handled 
      String str2 = null; //NullPointerException if 
           //null checking is not handled. 
      String str3 = "Starts with upper case"; 
      String str4 = "starts with lower case"; 

      System.out.println(startWithUpperCase(str1)); //false 
      System.out.println(startWithUpperCase(str2)); //false 
      System.out.println(startWithUpperCase(str3)); //true 
      System.out.println(startWithUpperCase(str4)); //false 



     } 

     public static boolean startWithUpperCase(String givenString){ 

      if(null == givenString || givenString.isEmpty()) return false; 
      else return (Character.isUpperCase(givenString.codePointAt(0))); 
     } 

    } 
1

먼저 null인지 확인하고 비어 있는지 확인하고 10에서 기존 문자열을 상단으로 변환하십시오. Rabiz처럼 boolean 값을 출력하려면 S.O.P를 사용하십시오.

public static void main(String[] args) 
{ 
    System.out.println("Enter name"); 
    Scanner kb = new Scanner (System.in); 
    String text = kb.next(); 

    if (null == text || text.isEmpty()) 
    { 
     System.out.println("Text empty"); 
    } 
    else if (text.charAt(0) == (text.toUpperCase().charAt(0))) 
    { 
     System.out.println("First letter in word "+ text + " is upper case"); 
    } 
    } 
관련 문제