В Java найдите, является ли первый символ в строке верхним регистром без использования регулярных выражений.
В Java, как найти, является ли первый символ в строке верхним регистром без регулярного выражения
Ответ 1
Предполагая, что s
непусто:
Character.isUpperCase(s.charAt(0))
или, как упоминалось, divec, чтобы он работал для символов с кодовыми точками выше U+FFFF
:
Character.isUpperCase(s.codePointAt(0));
Ответ 2
Собственно, это более тонко, чем кажется.
Приведенный выше код дал бы неправильный ответ для символа нижнего регистра, чья кодовая точка была выше U + FFFF (например, U + 1D4C3, MATHEMATICAL SCRIPT SMALL N). String.charAt вернул бы суррогатную пару UTF-16, которая не является персонажем, а, скорее, наполовину персонажем. Таким образом, вы должны использовать String.codePointAt, который возвращает int выше 0xFFFF (а не char). Вы бы сделали:
Character.isUpperCase(s.codePointAt(0));
Не обижайтесь на это; почти все Java-кодеры плохо обрабатывают UTF-16, потому что эта терминология вводит вас в заблуждение, заставляя вас думать, что каждое значение "char" представляет символ. UTF-16 отстой, потому что это почти фиксированная ширина, но не совсем. Таким образом, крайние случаи с фиксированной шириной не проходят проверку. До одного дня появляется какой-то документ, в котором содержится символ U + 1D4C3, и вся ваша система взрывается.
Ответ 3
Существует много способов сделать это, но самый простой выглядит следующим образом:
boolean isUpperCase = Character.isUpperCase("My String".charAt(0));
Ответ 4
мы можем найти букву верхнего регистра, используя также регулярное выражение
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
Ответ 5
Не забудьте проверить, является ли строка пустой или null
. Если мы забудем проверить null
или пустое, мы получим NullPointerException
или StringIndexOutOfBoundException
, если заданная String является пустой или пустой.
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) ) );
}
}
Ответ 6
Убедитесь, что вы сначала проверяете значение null и empty и десять преобразуете существующую строку в верхнюю. Используйте S.O.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");
}
}
Ответ 7
Если вам нужно проверить это вручную, вы можете сделать int a = s.charAt(0)
Если значение a находится между 65 и 90, это верхний регистр.
Ответ 8
String yourString = "yadayada";
if (Character.isUpperCase(yourString.charAt(0))) {
// print something
} else {
// print something else
}