剑指offer——表示数值的字符串

剑指offer——表示数值的字符串

问题描述

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。

思路分析

  1. 表示数值的字符串模式:A[.[B]] [e|EC],其中A为数值的整数部分。B小数点后的小数部分,C是指数部分的数值 。"e"和"E"都代表指数。

  2. A、C可以有符号,B不能有。

       [\\ + -]? [0-9] * ( \\.[0-9] *) ? ([eE][\\+ -]?[0-9]+)?
       --------|------|----------------|-------|-------|-------
       A的符号     A              B    指数部分  C的符号   C
    

正则表达式菜鸟教程:http://www.runoob.com/regexp/regexp-syntax.html

详细参照正则表达式用法。

代码

public class Solution {
    public boolean isNumeric(char[] str) {
        String string = String.valueOf(str);
        return string.matches("[\\+-]?[0-9]*(\\.[0-9]*)?([eE][\\+-]?[0-9]+)?");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值