web-dev-qa-db-fra.com

En Java, comment savoir si le premier caractère d'une chaîne est en majuscule sans regex

En Java, recherchez si le premier caractère d'une chaîne est en majuscule sans utiliser d'expressions régulières.

60
Vjy

En supposant que s est non vide:

Character.isUpperCase(s.charAt(0))

ou, comme mentionné par divec, pour que cela fonctionne pour les caractères avec des points de code supérieurs à U+FFFF:

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

En fait, c'est plus subtil qu'il n'y paraît.

Le code ci-dessus donnerait la réponse incorrecte pour un caractère minuscule dont le point de code était supérieur à U + FFFF (tel que U + 1D4C3, MINUSCULE DE SCRIPT MATHÉMATIQUE N). String.charAt renverrait une paire de substitution UTF-16, qui n'est pas un caractère, mais plutôt la moitié du caractère, pour ainsi dire. Vous devez donc utiliser String.codePointAt, qui renvoie un int supérieur à 0xFFFF (pas un caractère). Vous feriez:

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

Ne vous sentez pas mal négligé cela; presque tous les codeurs Java gèrent mal UTF-16, parce que la terminologie suggère de manière trompeuse que chaque valeur de "caractère" représente un caractère. UTF-16 est nul, car sa largeur est presque fixe mais pas tout à fait. Les valises Edge de largeur non fixe ont donc tendance à ne pas être testées. Jusqu'au jour où un document contenant un caractère tel que U + 1D4C3 arrive, tout votre système explose.

40
divec

Il y a plusieurs façons de le faire, mais la plus simple semble être la suivante:

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

N'oubliez pas de vérifier si la chaîne est vide ou null. Si nous oublions de cocher null ou vide, nous aurions NullPointerException ou StringIndexOutOfBoundException si une chaîne donnée est nulle ou vide. 

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

nous pouvons trouver une lettre majuscule en utilisant aussi bien l'expression régulière

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

pour un exemple détaillé. s'il vous plaît visitez http://www.onlinecodegeek.com/2015/09/how-to-determines-if-string-starts-with.html

1
Thulasiram

Assurez-vous d’abord de vérifier les valeurs null et empty et dix convertit la chaîne existante en chaîne supérieure. Utilisez S.O.P si vous voulez voir des sorties autrement booléennes que 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");
     }
  }
1
Yoko Alpha

Si vous devez le vérifier manuellement, vous pouvez effectuer int a = s.charAt(0) 

Si la valeur de a est comprise entre 65 et 90, il s'agit d'une majuscule.

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