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

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

вопрос задан 15.12.2010
Vjy
1004 репутация

8 ответов


  • 107 рейтинг

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

    Character.isUpperCase(s.charAt(0))
    

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

    Character.isUpperCase(s.codePointAt(0));
    
    ответ дан vitaut, с репутацией 21793, 15.12.2010
  • 37 рейтинг

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

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

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

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

    ответ дан divec, с репутацией 371, 30.09.2012
  • 5 рейтинг

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

    boolean isUpperCase = Character.isUpperCase("My String".charAt(0));
    
    ответ дан Crozin, с репутацией 34553, 15.12.2010
  • 1 рейтинг

    Не забудьте проверить, является ли строка пустой или 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) ) );
            }
    
        }
    
    ответ дан Razib, с репутацией 7285, 6.09.2015
  • 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. ком / 2015/09 / как к определяет, если-струнные-старты-с. HTML

    ответ дан Thulasiram, с репутацией 27, 5.09.2015
  • 1 рейтинг

    Убедитесь, что вы сначала проверили наличие пустых и пустых значений, а десять преобразует существующую строку в верхнюю. Используйте S. О. 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");
         }
      }
    
    ответ дан Yoko Alpha, с репутацией 11, 6.03.2017
  • 0 рейтинг

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

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

    ответ дан does_not_exist, с репутацией , 15.12.2010
  • 0 рейтинг
    String yourString = "yadayada";
    if (Character.isUpperCase(yourString.charAt(0))) {
        // print something
    } else {
        // print something else
    }
    
    ответ дан Om Prakash, с репутацией 23, 13.05.2013