Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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 - Fatal编程技术网

Java 如何检查以数字开头的字符串?

Java 如何检查以数字开头的字符串?,java,Java,我有一个包含字母数字字符的字符串 我需要检查字符串是否以数字开头 谢谢,使用类似正则表达式的^\d请参见isDigit(char ch)方法: 并使用String.charAt()方法将其传递给字符串的第一个字符 Character.isDigit(myString.charAt(0)); 编辑:我搜索了java文档,查看了string类中可以得到第一个字符的方法,并查看了character类中的方法,看看它是否有任何方法来检查这样的事情 我想,你也可以在问之前这样做 EDI2:我的意思是,

我有一个包含字母数字字符的字符串

我需要检查字符串是否以数字开头


谢谢,

使用类似正则表达式的
^\d
请参见
isDigit(char ch)
方法:

并使用
String.charAt()
方法将其传递给字符串的第一个字符

Character.isDigit(myString.charAt(0));
编辑:我搜索了java文档,查看了string类中可以得到第一个字符的方法,并查看了character类中的方法,看看它是否有任何方法来检查这样的事情

我想,你也可以在问之前这样做

EDI2:我的意思是,试着做事,读/找&如果你找不到任何东西,就问。

我第一次发布时犯了一个错误。isDigit是字符类上的静态方法。

很抱歉,我没有看到您的Java标记,只是在阅读问题。既然我已经把其他答案打出来了,我还是把它们留在这里吧

Java

String myString = "9Hello World!";
if ( Character.isDigit(myString.charAt(0)) )
{
    System.out.println("String begins with a digit");
}
C++

string myString = "2Hello World!";

if (isdigit( myString[0]) )
{
    printf("String begins with a digit");
}
\b[0-9]
正则表达式

string myString = "2Hello World!";

if (isdigit( myString[0]) )
{
    printf("String begins with a digit");
}
\b[0-9]
一些我的正则表达式有效的证据:除非我的测试数据是错误的?

这应该可以:

String s = "123foo";
Character.isDigit(s.charAt(0));

我认为你应该使用正则表达式:


import java.util.regex.*;

public class Test {
  public static void main(String[] args) {
    String neg = "-123abc";
    String pos = "123abc";
    String non = "abc123";
        /* I'm not sure if this regex is too verbose, but it should be
         * clear. It checks that the string starts with either a series
         * of one or more digits... OR a negative sign followed by 1 or
         * more digits. Anything can follow the digits. Update as you need
         * for things that should not follow the digits or for floating
         * point numbers.
         */
    Pattern pattern = Pattern.compile("^(\\d+.*|-\\d+.*)");
    Matcher matcher = pattern.matcher(neg);
    if(matcher.matches()) {
        System.out.println("matches negative number");
    }
    matcher = pattern.matcher(pos);
    if (matcher.matches()) {
        System.out.println("positive matches");
    }
    matcher = pattern.matcher(non);
    if (!matcher.matches()) {
        System.out.println("letters don't match :-)!!!");
    }
  }
}

您可能希望调整此值以接受浮点数,但这适用于负数。其他答案不适用于否定,因为它们只检查第一个字符!请更具体地说明您的需求,我可以帮助您调整此方法。

Brock:OP添加了java标记(问题中未指定)。也许现在我已经确定了答案,投票反对我的人会重新考虑?我相信regex是错的。不是因为我在回答中的原因(因为我不确定我是否正确,因为这取决于OP的意图……他需要澄清),而是因为\b\b是一个词的边界。你想在字符串的开头强制输入数字,所以你应该使用^。好吧,这个家伙是谷歌的一次性成功者,显然不知道Stackoverflow是如何工作的。他有很多答案,但没有一个正确。我会放手的,伙计,对不起,布罗克,我会改正的。我认为测试数据可能是错误的,因为如果字符串以空格开头,我认为这是单词边界。。。不过我试过了,似乎效果不错:-)。嗯,你能说得更具体些吗?答案主要是检查第一个字符。你想要什么样的号码?这些答案不适用于负数!还有,在电话号码之后你想要什么。。。有什么事吗?是的。。。你是说“数字”还是“数字”。。。现在我很困惑。。。每个人似乎都认为数字意味着数字…::叹气:这是一个很好的观点。我以为他指的是数字。如果他指的是数字,那么您肯定需要正则表达式。为了完整性:isDigit不仅返回真值0..9,还返回其他(如阿拉伯语)数字:大多数名为isXXX()的方法也是如此。我认为这在方法名称中是隐含的,可以通过查看我提供的方法的链接找到…@Csaba_H-FYI:0-9是阿拉伯数字-但我明白你的意思。对于“第一个字符是数字吗”+1,这是一个非常复杂的解决方案。这个问题很模糊,没有指定“第一个字符是数字吗?”@斯卡夫曼:如果你读了我的答案,很明显我不是想回答“第一个字符是数字吗”。。。这不是OP写的。OP问:“字符串以数字开头”。我正试图制定一个更稳健的解决方案来处理负面问题。很明显,这个问题还不清楚。(阅读我在其他帖子上的评论)。我不确定我的答案是否真的值得投反对票(尽管我不确定投反对票的是你)。此外,解决方案看起来很复杂,但实际上并不。。。它主要是用于打印语句的垃圾代码,以显示它正确匹配的内容。很好的建议+1美元。