在Java中,如何查找string中的第一个字符是否为大写,而不使用正则expression式

在Java中,查找string中的第一个字符是否为大写,而不使用正则expression式。

假设s不是空的:

 Character.isUpperCase(s.charAt(0)) 

或者如divec所提到的那样,使其对于代码点高于U+FFFF字符起作用:

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

其实这比看起来更微妙。

上面的代码会给代码点高于U + FFFF的小写字符(如U + 1D4C3,math脚本小N)给出错误的答案。 String.charAt将返回一个UTF-16代理对,它不是一个字符,而是一半的字符,可以这么说。 所以你必须使用String.codePointAt,它返回一个高于0xFFFF的int(不是char)。 你会做:

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

不要不好意思这个; 几乎所有的Java编码人员都很难处理UTF-16,因为这个术语误导性地让你认为每个“char”值代表一个字符。 UTF-16很烂,因为它几乎是固定的宽度,但不是很大。 所以非固定宽度的边缘案例往往不被testing。 直到有一天,一些文件中包含一个像U + 1D4C3这样的字符,整个系统就会爆炸。

有很多方法可以做到这一点,但最简单的方法似乎是:

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

我们也可以使用正则expression式来查找大写字母

 private static void findUppercaseFirstLetterInString(String content) { Matcher m = Pattern .compile("([az])([az]*)", 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

不要忘记检查string是否为空或null 。 如果我们忘记检查null或空,那么如果给定的String为null或空,我们将得到NullPointerExceptionStringIndexOutOfBoundException

 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,然后把现有的string转换成10。 如果想要查看输出,则使用SOP,否则使用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"); } } 

如果你必须手动检查出来,你可以做int a = s.charAt(0)

如果a的值在65到90之间,则是大写。

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