it-swarm.com.de

In Java ist das Ermitteln des ersten Zeichens in einer Zeichenfolge ohne Regex in Großbuchstaben

Suchen Sie in Java, ob das erste Zeichen in einer Zeichenfolge ohne reguläre Ausdrücke groß geschrieben wird.

60
Vjy

Angenommen, s ist nicht leer:

Character.isUpperCase(s.charAt(0))

oder, wie von divec erwähnt, für Zeichen mit Codepunkten oberhalb von U+FFFF:

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

Eigentlich ist dies subtiler als es aussieht.

Der obige Code würde die falsche Antwort für einen Kleinbuchstaben geben, dessen Codepunkt über U + FFFF lag (wie beispielsweise U + 1D4C3, MATHEMATICAL SCRIPT SMALL N). String.charAt würde ein UTF-16-Ersatzpaar zurückgeben, bei dem es sich nicht um ein Zeichen, sondern um die Hälfte handelt. Sie müssen also String.codePointAt verwenden, der ein int über 0xFFFF zurückgibt (kein Zeichen). Du würdest:

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

Fühlen Sie sich nicht schlecht übersehen; Fast alle Java-Codierer behandeln UTF-16 schlecht, da die Terminologie irreführend den Eindruck erweckt, dass jeder "char" -Wert ein Zeichen darstellt. UTF-16 ist scheiße, weil es fast fest ist, aber nicht ganz. Daher werden Edge-Cases mit nicht fester Breite normalerweise nicht getestet. Bis zu einem Tag kommt ein Dokument mit einem Zeichen wie U + 1D4C3, und Ihr gesamtes System sprengt.

40
divec

Es gibt viele Möglichkeiten, dies zu tun, aber die einfachste scheint die folgende zu sein:

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

Vergessen Sie nicht zu überprüfen, ob die Zeichenfolge leer ist oder null. Wenn wir vergessen, null oder leer zu überprüfen, erhalten wir NullPointerException oder StringIndexOutOfBoundException, wenn ein String leer oder leer ist. 

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

wir können Großbuchstaben auch mit regulären Ausdrücken finden

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

für ausführliches Beispiel. Bitte besuchen Sie http://www.onlinecodegeek.com/2015/09/wie-zu-determines-if-string-starts-with.html

1
Thulasiram

Stellen Sie sicher, dass Sie zuerst nach Null und Leer suchen und die vorhandene Zeichenfolge in eine obere konvertieren. Verwenden Sie S.O.P, wenn Sie Ausgaben sehen möchten, die ansonsten boolesch sind wie 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

Wenn Sie es manuell auschecken müssen, können Sie int a = s.charAt(0) 

Wenn der Wert von a zwischen 65 und 90 liegt, wird Großbuchstaben verwendet.

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