2010-12-15 5 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

手動でそれをチェックアウトする必要があるの値は、それが大文字である90から65の間にある場合は、int a = s.charAt(0)

を行うことができます。

+1

非ASCII文字についてはどうですか?あなたはそれが唯一のASCII文字コード処理のためのものであることを正しい@vitaut – vitaut

+0

.... –

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または空であることを忘れると、指定されたStringが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

最初にヌルと空をチェックし、既存の文字列を上位に変換することを確認してください。 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"); 
    } 
    } 
関連する問題