Vjy*_*Vjy 61 java string char character-encoding
在Java中,查找字符串中的第一个字符是否为大写而不使用正则表达式.
vit*_*aut 115
假设s非空:
Character.isUpperCase(s.charAt(0))
Run Code Online (Sandbox Code Playgroud)
或者,如divec所述,使其适用于上面代码点的字符U+FFFF:
Character.isUpperCase(s.codePointAt(0));
Run Code Online (Sandbox Code Playgroud)
小智 40
实际上,这比看起来更微妙.
上面的代码会给出代码点高于U + FFFF的小写字符(例如U + 1D4C3,MATHEMATICAL SCRIPT SMALL N)的错误答案.String.charAt将返回一个UTF-16代理项对,它不是一个字符,而是字符的一半,可以这么说.所以你必须使用String.codePointAt,它返回一个高于0xFFFF的int(不是char).你会这样做:
Character.isUpperCase(s.codePointAt(0));
不要忽视这一点; 几乎所有Java编码器都严重处理UTF-16,因为术语误导性地让你认为每个"char"值代表一个字符.UTF-16很糟糕,因为它几乎是固定宽度但不完全.因此,非固定宽度的边缘情况往往不会被测试.直到有一天,一些文件中包含一个像U + 1D4C3这样的字符,你的整个系统都会爆炸.
有很多方法可以做到这一点,但最简单的似乎是以下方法:
boolean isUpperCase = Character.isUpperCase("My String".charAt(0));
Run Code Online (Sandbox Code Playgroud)