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



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

758   8  

8 ответов:

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

Character.isUpperCase(s.charAt(0))

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

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

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

приведенный выше код даст неверный ответ для символа нижнего регистра, кодовая точка которого была выше U+FFFF (например, U+1D4C3, математический скрипт SMALL N). Строка.чарат вернул бы суррогатную пару UTF-16, которая не является персонажем, а скорее половиной персонажа, так сказать. Так что вы должны использовать строку.codePointAt, который возвращает int выше 0xFFFF (не char). Вы бы сделали:

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

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

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

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

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

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

не забудьте проверить, является ли строка пустой или 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) ) );
        }

    }

убедитесь, что вы сначала проверяете null и empty и ten преобразует существующую строку в верхнюю. Используйте S. O. P, если хотите видеть выходы в противном случае boolean, как это сделал Рабиз.

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

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

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

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

Comments

    Ничего не найдено.