web-dev-qa-db-ja.com

Javaで、文字列の最初の文字が正規表現なしで大文字であるかどうかを確認する方法

Javaでは、正規表現を使用せずに、文字列の最初の文字が大文字かどうかを確認します。

61
Vjy

sが空でないと仮定します:

Character.isUpperCase(s.charAt(0))

または、divecで述べたように、コードポイントがU+FFFF

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

実際、これは見た目よりも微妙です。

上記のコードは、コードポイントがU + FFFFを超える小文字(U + 1D4C3、数学スクリプトSMALL Nなど)に対して誤った答えを返します。 String.charAtはUTF-16サロゲートペアを返します。これは文字ではなく、文字の半分です。したがって、String.codePointAtを使用する必要があります。これは、0xFFFF(charではなく)より大きいintを返します。あなたがするだろう:

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

これを見過ごさないでください。ほとんどすべてのJavaコーダーはUTF-16を不適切に処理します。これは、用語によって各「char」値が文字を表していると誤解されるように思われるためです。ある日まで、U + 1D4C3のような文字を含むドキュメントが入ってくると、システム全体が破裂します。

40
divec

それを行うには多くの方法がありますが、最も簡単な方法は次のようです。

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

文字列が空か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
Razib

同様に正規表現を使用して大文字を見つけることができます

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
Thulasiram

最初にnullと空を確認し、10が既存の文字列を上位に変換することを確認してください。 Rabizのようにブール値以外の出力を表示する場合は、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");
     }
  }
1
Yoko Alpha

手動でチェックアウトする必要がある場合は、int a = s.charAt(0)を実行できます

Aの値が65〜90の場合、大文字です。

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