我对一个非常简单的字符串验证问题感兴趣,看看字符串中的起始字符是否以大写字母开头,然后让控制台显示true或false。根据我的理解,你不必调用类似System.console()。printf(“true”,s)的东西来实现这一点。我可以发誓我已经看到使用以下示例代码实现了类似的基本实现:
public class Verify {
public static boolean checkStartChar(String s) {
if (s.startsWith("[A-Z]")) {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
String str = "abCD";
checkStartChar(str);
}
}
但是当我运行它时,没有任何显示。如果我在返回T / F之前添加条件打印输出稍作修改,例如
public class Verify2 {
public static boolean checkStartChar(String s) {
if (s.startsWith("[A-Z]")) {
System.out.println("yep");
return true;
}
else {
System.out.println("nope");
return false;
}
}
public static void main(String[] args) {
String str = "abCD";
checkStartChar(str);
}
}
问题有所解决,因为控制台显示“yep”或“nope”,但尚未解决,因为我只想让控制台显示true或false。而已。建议吗?
答案 0 :(得分:5)
由于这个问题已经得到解答,我想指出RegExes不需要解决这个问题(而且它们是昂贵的操作)。你可以这样做:
static boolean startsWithUpperCase(String toCheck)
{
if(toCheck != null && !toCheck.isEmpty())
{
return Character.isUpperCase(toCheck.charAt(0));
}
return false;
}
答案 1 :(得分:4)
尚未解决,因为我只想让控制台显示真或假
调用checkStartChar
方法将返回值,这并不意味着它会将值打印到控制台。您需要编写处理返回值的方式。如果要打印返回值,则应执行以下操作:
System.out.println(checkStartChar(str));
将打印checkStartChar
方法
答案 2 :(得分:1)
if(s.startsWith("[A-Z]")){
String.startsWith(prefix)不会将正则表达式作为参数,您应该使用正则表达式APi。
Pattern p = Pattern.compile("[A-Z]");
Matcher m = p.matcher(new Character(s.charAt(0)).toString());
if(m.find()){
return true;
}else{
return false;
}
String str = "AbCD";
System.out.println(checkStartChar(str));
输出:
true
答案 3 :(得分:0)
在你的代码中checkStartChar(str);返回一个未在程序中使用的布尔值。然后,如果要显示true或false,则可以使用。 的System.out.println(checkStartChar(STR));