在 Java 中,如何查找字符串中没有正则表达式的第一个字符是否为大写

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

147190 次浏览

假设 s不是空的:

Character.isUpperCase(s.charAt(0))

或者,正如 divec 所提到的,让它适用于代码点高于 U+FFFF的字符:

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

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

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

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

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

事实上,这比看起来要微妙得多。

上面的代码对于代码点在 U + FFFF 之上的小写字符(例如 U + 1 D4C3,MATHEMATICAL SCRIPT SMALL N)给出了不正确的答案。CharAt 将返回一个 UTF-16代理对,可以说,它不是一个字符,而是字符的一半。因此必须使用 String.codePointAt,它返回0xFFFF 之上的 int (而不是 char)。你可以这么做:

IsUpperCase (s.codePointAt (0)) ;

不要因为忽略了这一点而感到不安; 几乎所有的 Java 编码器都不能很好地处理 UTF-16,因为术语误导性地让您认为每个“ char”值代表一个字符。UTF-16糟透了,因为它几乎是固定宽度,但不完全。因此,非固定宽度的边缘情况往往得不到测试。直到有一天,一些包含 U + 1 D4C3这样的字符的文档出现,您的整个系统就会崩溃。

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

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

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或空,那么如果给定的字符串为 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 和 null,然后 ten 将现有字符串转换为 Upper。如果想要看到输出,使用标准操作规程,否则就像 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");
}
}