В Java, как найти, если первый символ в строке в верхнем регистре без регулярных выражений - PullRequest
61 голосов
/ 15 декабря 2010

В Java найдите, является ли первый символ в строке прописными буквами, без использования регулярных выражений.

Ответы [ 8 ]

113 голосов
/ 15 декабря 2010

Предполагается, что s не пусто:

Character.isUpperCase(s.charAt(0))

или, как упоминалось в divec, чтобы он работал для символов с кодовыми точками выше U+FFFF:

Character.isUpperCase(s.codePointAt(0));
40 голосов
/ 01 октября 2012

На самом деле, это тоньше, чем кажется.

Приведенный выше код даст неправильный ответ для символа нижнего регистра, кодовая точка которого была выше U + FFFF (например, U + 1D4C3, МАТЕМАТИЧЕСКИЙ СКРИПТ МАЛЫЙ N) String.charAt будет возвращать суррогатную пару UTF-16, которая, так сказать, не символ, а половина. Поэтому вы должны использовать String.codePointAt, который возвращает int выше 0xFFFF (не символ). Вы бы сделали:

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

Не расстраивайся из-за этого; почти все Java-кодеры плохо справляются с UTF-16, потому что терминология вводит в заблуждение, заставляя вас думать, что каждое значение "char" представляет символ. UTF-16 отстой, потому что это почти фиксированная ширина, но не совсем. Так что случаи краев не фиксированной ширины, как правило, не проходят проверку. Пока однажды не придет какой-нибудь документ, содержащий символ типа U + 1D4C3, и вся ваша система взорвется.

5 голосов
/ 15 декабря 2010

Есть много способов сделать это, но самый простой, кажется, следующий:

boolean isUpperCase = Character.isUpperCase("My String".charAt(0));
1 голос
/ 06 марта 2017

Убедитесь, что вы сначала проверили наличие пустых и пустых значений, а десять преобразует существующую строку в верхнюю.Используйте SOP, если хотите увидеть выходные данные, в противном случае логические, как это сделал Рабиз.

 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 голос
/ 06 сентября 2015

Не забудьте проверить, является ли строка пустой или 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 голос
/ 05 сентября 2015

мы также можем найти заглавную букву, используя регулярное выражение

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

0 голосов
/ 13 мая 2013
String yourString = "yadayada";
if (Character.isUpperCase(yourString.charAt(0))) {
    // print something
} else {
    // print something else
}
0 голосов
/ 15 декабря 2010

Если вам нужно проверить это вручную, вы можете сделать int a = s.charAt(0)

Если значение от 65 до 90, это верхний регистр.

...