Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何确定字符串中的第一个字符是否为大写,而不使用正则表达式_Java_String_Character Encoding_Char - Fatal编程技术网

在Java中,如何确定字符串中的第一个字符是否为大写,而不使用正则表达式

在Java中,如何确定字符串中的第一个字符是否为大写,而不使用正则表达式,java,string,character-encoding,char,Java,String,Character Encoding,Char,在Java中,查找字符串中的第一个字符是否为大写而不使用正则表达式。假设s为非空: Character.isUpperCase(s.charAt(0)) 或者,如divec所述,使其适用于代码点在U+FFFF以上的字符: Character.isUpperCase(s.codePointAt(0)); 有很多方法可以做到这一点,但最简单的方法似乎是: boolean isUpperCase = Character.isUpperCase("My String".charAt(0)); 如果

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

假设
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+1D4C3,数学脚本小N),上面的代码将给出不正确的答案。charAt将返回UTF-16代理项对,该代理项对不是字符,而是字符的一半。因此,您必须使用String.codePointAt,它返回0xFFFF(不是字符)以上的整数。你会做:

字符.isUpperCase(s.codePointAt(0))


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

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

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

例如详细的例子。请访问

不要忘记检查字符串是否为空或
null
。如果我们忘记检查
null
或empty,那么如果给定字符串为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,然后将现有字符串转换为大写。如果希望看到像Rabiz那样的布尔输出,请使用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");
     }
  }

非ASCII字符呢?你们怎么知道这些。我是说,你从哪里学到这些东西的。一般来说,编程课程没有这些深刻的知识。
 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");
     }
  }