我有下面的字符串
11-abzw9rk
前面的2总是数字后面的是-
如何验证前2位总是包含-的数字
当然可以使用.contains()
,但是否有更好的方法来验证数字?
这里是一个使用String.charAt()
和Character.isDigit()
的简单版本
String str = "11-abzw9rk";
//How to check 3rd is dash
if(str.charAt(2) == '-') {
System.out.println("Yes, 3rd character is dash");
}
//and first 2 are numbers?
if(Character.isDigit(str.charAt(0)) && Character.isDigit(str.charAt(1))) {
System.out.println("Yes, first two are digits");
}
我们可以使用字符串的charAt
函数检查一个if语句中的所有条件。例如,s是你的字符串,那么条件将如下所示:
if(Character.isDigit(s.charAt(0)) && Character.isDigit(s.charAt(1)) && s.charAt(2)=='-'){
System.out.println("Match found");}
else{
System.out.println("String doesn't match");
}
使用regex^\d{2}-
^
行首
\d{2}
两位
-
横线
.*
else
import java.util.regex.Matcher;
import java.util.regex.Pattern;
...
Pattern pattern = Pattern.compile("^\d{2}-.*");
Matcher matcher = pattern.matcher("11-abzw9rk");
boolean matchFound = matcher.find();
if(matchFound) {
System.out.println("Match found");
} else {
System.out.println("Match not found");
}
class Stringcheck{
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
System.out.print("Enter the string: ");
String str= sc.nextLine();
if(Character.isDigit(str.charAt(0)) && Character.isDigit(str.charAt(1)) &&
(str.charAt(2)=='-'){
System.out.println("Match found");
}
else{
System.out.println("String doesn't match");
}
}
}