Java 如何确定字符串的第一个字符是否为数字?
在Java中,有没有一种方法可以确定字符串的第一个字符是否是数字 一种方法是Java 如何确定字符串的第一个字符是否为数字?,java,string,Java,String,在Java中,有没有一种方法可以确定字符串的第一个字符是否是数字 一种方法是 string.startsWith("1") 一直做到9点,但这似乎效率很低 Character.isDigit(string.charAt(0)) 注意,不仅仅是0-9。您可能更喜欢: char c = string.charAt(0); isDigit = (c >= '0' && c <= '9'); 但是,对于这些方法中的任何一种,您必须首先确保字符串不是空的。如果是,则cha
string.startsWith("1")
一直做到9点,但这似乎效率很低
Character.isDigit(string.charAt(0))
注意,不仅仅是0-9。您可能更喜欢:
char c = string.charAt(0);
isDigit = (c >= '0' && c <= '9');
但是,对于这些方法中的任何一种,您必须首先确保字符串不是空的。如果是,则charAt(0)
和子字符串(0,1)
将抛出StringIndexOutOfBoundsException
startsWith
没有此问题
要使整个条件成为一行并避免长度检查,可以将正则表达式更改为以下内容:
s.matches("\\d.*")
// or the equivalent
s.matches("[0-9].*")
如果这种情况在您的程序中没有出现,那么使用正则表达式对性能的影响不大。正则表达式是一种非常强大但昂贵的工具。使用它们检查第一个字符是否为数字是有效的,但它不是那么优雅:)我更喜欢这种方式:
regular expression starts with number->'^[0-9]'
Pattern pattern = Pattern.compile('^[0-9]');
Matcher matcher = pattern.matcher(String);
if(matcher.find()){
System.out.println("true");
}
public boolean isLeadingDigit(final String value){
final char c = value.charAt(0);
return (c >= '0' && c <= '9');
}
public boolean isLeadingDigit(最终字符串值){
最终字符c=值。字符(0);
return(c>='0'&&c我刚刚遇到这个问题,并考虑使用一个不使用正则表达式的解决方案
在我的例子中,我使用了一个助手方法:
public boolean notNumber(String input){
boolean notNumber = false;
try {
// must not start with a number
@SuppressWarnings("unused")
double checker = Double.valueOf(input.substring(0,1));
}
catch (Exception e) {
notNumber = true;
}
return notNumber;
}
可能有点过分,但我尽量避免使用正则表达式。在KOTLIN中:
假设您有一个字符串,如下所示:
private val phoneNumber="9121111111"
在第一个
中,您应该得到第一个:
val firstChar=phoneNumber.slice(0..0)
在第二个处,您可以检查返回的第一个字符
firstChar.isInt() // or isFloat()
仅验证第一个字母是否为数字或字符--
为数
Character.isDigit(str.charAt(0))--返回true
为了性格
Character.isleter(str.charAt(0))--return true我本想提到regex方法,但我担心如果我这样做了,您可能会尝试它。1)函数
不是Java。2)这只允许使用阿拉伯数字,而不允许使用中文、印度等。这可能是您喜欢的,但问题中没有具体说明。3)我在四年前的回答中已经介绍了这个精确解。您不需要{1,1}
后缀,这意味着“前面的模式必须出现1到1次”。这意味着与模式本身完全相同。此解决方案不起作用,因为String.matches和模式API尝试匹配完整的字符串,而不仅仅是第一个字符。re:“您必须首先确保字符串不是空的“-正确,更重要的是-您还必须确保它不为null,就好像所有显示的方法都会抛出异常一样。您可以直接检查(例如((null!=s)&&Character.isDigit(s.charAt(0))
)或使用Character.isDigit((s.s:“X”).charAt(0))之类的技巧
firstChar.isInt() // or isFloat()