Development Tip

Java에서 문자열의 첫 번째 문자가 정규식없이 대문자인지 확인하는 방법

yourdevel 2020. 11. 29. 12:23
반응형

Java에서 문자열의 첫 번째 문자가 정규식없이 대문자인지 확인하는 방법


Java에서는 정규식을 사용하지 않고 문자열의 첫 번째 문자가 대문자인지 확인합니다.


s비어 있지 않다고 가정합니다 .

Character.isUpperCase(s.charAt(0))

또는 divec에서 언급했듯이 위의 코드 포인트가있는 문자에 대해 작동하도록하려면 다음을 수행하십시오 U+FFFF.

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

실제로 이것은보기보다 미묘합니다.

위의 코드는 코드 포인트가 U + FFFF (예 : U + 1D4C3, MATHEMATICAL SCRIPT SMALL N)보다 높은 소문자에 대해 오답을 제공합니다. String.charAt은 문자가 아니라 문자의 절반 인 UTF-16 서로 게이트 쌍을 반환합니다. 따라서 0xFFFF (문자 아님) 이상의 int를 반환하는 String.codePointAt을 사용해야합니다. 당신은 할 것입니다 :

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

이것을 간과하고 나쁘게 느끼지 마십시오; 거의 모든 Java 코더는 UTF-16을 잘못 처리합니다. 용어로 인해 각 "char"값이 문자를 나타내는 것으로 오해 할 수 있기 때문입니다. UTF-16은 거의 고정 된 너비이지만 그렇지 않기 때문에 짜증납니다. 따라서 너비가 고정되지 않은 가장자리 케이스는 테스트되지 않는 경향이 있습니다. 언젠가는 U + 1D4C3와 같은 문자가 포함 된 문서가 들어 와서 전체 시스템이 폭발합니다.


이를 수행하는 방법은 여러 가지가 있지만 가장 간단한 방법은 다음과 같습니다.

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

정규 표현식을 사용하여 대문자를 찾을 수도 있습니다.

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을 방문 하십시오


문자열이 비어 있는지 확인하는 것을 잊지 마십시오 null. 우리가 검사를 잊어 버린 경우 null또는 빈 우리는 얻을 것 NullPointerException또는 StringIndexOutOfBoundException주어진 문자열의 경우는 null 또는 빈입니다.

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) ) );
        }

    }

먼저 null 및 비어 있는지 확인하고 10은 기존 문자열을 대문자로 변환합니다. 출력을 보려면 SOP를 사용하십시오. 그렇지 않으면 Rabiz처럼 부울입니다.

 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");
     }
  }

수동으로 확인해야하는 경우 할 수 있습니다. int a = s.charAt(0)

a의 값이 65에서 90 사이이면 대문자입니다.


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

참고 URL : https://stackoverflow.com/questions/4452939/in-java-how-to-find-if-first-character-in-a-string-is-upper-case-without-regex

반응형