如果有一个字符串,如何判断是否存在符合如下条件的子串:
1.必须在字符串开头
2.由一个或几个数字加一个点构成
比如;123.adsd
我的实现如下:
1.查找字符串中第一个'.'出现的位置
2.如果找到,那么取'.'之前的字串判断是否全部为数字
如果全为数字,那么返回'.'之后的子串
我觉得这样做有点麻烦,又没有什么简单的方法,请指点一下

解决方案 »

  1.   

    你那样实现不是很麻烦public class Test {
    public static void main(String[] args)  {
    String str = "123.abc.4d";
    String[] strs = str.split("\\.");
    if(strs!=null&&strs[0].matches("\\d+")){
    System.out.println(strs[0]);
    }
    for(String s:strs){
    System.out.println(s);
    }
    }
    }
      

  2.   


    boolean b = Pattern.matches("正则表达式", "aaaaab");
    matches
    public static boolean matches(String regex,
                                  CharSequence input)编译给定正则表达式并尝试将给定输入与其匹配。 
    调用此便捷方法的形式 Pattern.matches(regex, input);与表达式 
    Pattern.compile(regex).matcher(input).matches() 的行为完全相同。 
    如果要多次使用一种模式,编译一次后重用此模式比每次都调用此方法效率更高。
    参数:
    regex - 要编译的表达式
    input - 要匹配的字符序列 
    抛出: 
    PatternSyntaxException - 如果表达式的语法无效
      

  3.   

    String regExp="(\d+).(\D+)";
    判断是否匹配
    匹配取组2
      

  4.   

    不知道是不是这样
    String regex = "^[0-9]*.+";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher("123.adsd");
      

  5.   


    public TestSplit
    {
        public static viod main(String args[])
        {
           String str="123.adsd";
           String[] result=str.split("[.]");
           if(result!=null&&result[0].matches("\\d"))
           {
              System.out.println(result[0]);
           }
          for(String str1:result)   //将字符窜数组result中的值循环赋给str1
          {
             System.out.println(str1);    //打印以“.”划分之后的子串
          }
        }
    }
      

  6.   

    你可以用split把字符串分开再来判断
      

  7.   

    String str = "123.lasjdfie\nfasdfeils";System.out.println(str.matches("(?s)^\\d+\\..*$"));