java 验证字符串是否为数字

java

浏览数:4

2019-1-13

片段 1片段 2片段 3


验证字符串是否为数字

package com.ywyself.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

public class Number {

    /**
     * 检查是否为整数,不区分正负
     *
     * @param str
     * @return true|当为整数时
     */
    public static boolean isInteger(String str) {
        return Pattern.compile("^-?([1-9]+[0-9]+)|0$").matcher(str).matches();
    }

    /**
     * 检查是否为【正】整数
     *
     * @param str
     * @return true|当为正整数时
     */
    public static boolean isIntegerPositive(String str) {
        return Pattern.compile("^0?[1-9]+$").matcher(str).matches();
    }

    /**
     * 检查是否为【负】整数
     *
     * @param str
     * @return true|当为负整数时
     */
    public static boolean isIntegerNegative(String str) {
        return Pattern.compile("^-0?[1-9]+$").matcher(str).matches();
    }

    /**
     * 检查是否为浮点数
     *
     * @param str
     * @return true|当为浮点数时
     */
    public static boolean isFloat(String str) {
        return Pattern.compile("^-?(([1-9][0-9]*\\.[0-9]*)|(0\\.[0-9]*))[1-9]+$").matcher(str).matches();
    }

    /**
     * 检查是否为【正】浮点数
     *
     * @param str
     * @return true|当为正浮点数时
     */
    public static boolean isFloatPositive(String str) {
        return Pattern.compile("^(([1-9][0-9]*\\.[0-9]*)|(0\\.[0-9]*))[1-9]+$").matcher(str).matches();
    }

    /**
     * 检查是否为【负】浮点数
     *
     * @param str
     * @return true|当为负浮点数时
     */
    public static boolean isFloatNegative(String str) {
        return Pattern.compile("^-(([1-9][0-9]*\\.[0-9]*)|(0\\.[0-9]*))[1-9]+$").matcher(str).matches();
    }

    /**
     * 检查是否为数字,包含整数和浮点数,以及正负数
     *
     * @param str
     * @return true|为整数或者浮点数
     */
    public static boolean isNumber(String str) {
        return isInteger(str) || isFloat(str);
    }

    public static void main(String[] args) {
        List<String> test = new ArrayList<String>();
        test.add("0");
        test.add("-0");
        test.add("123");
        test.add("-123");
        test.add("0123");
        test.add("-0123");
        test.add("00123");
        test.add("-00123");
        test.add("0.123");
        test.add("0.0123");
        test.add("0.00123");
        test.add("-0.123");
        test.add("-0.0123");
        test.add("-0.0123");
        test.add("-0.00");
        test.add("00.123");
        test.add("-00.123");
        System.out.println("------------整数");
        for (String s : test) {
            System.out.printf("%5b   %s\n", isInteger(s), s);
        }
        System.out.println("------------正整数");
        for (String s : test) {
            System.out.printf("%5b   %s\n", isIntegerPositive(s), s);
        }
        System.out.println("------------负整数");
        for (String s : test) {
            System.out.printf("%5b   %s\n", isIntegerNegative(s), s);
        }
        System.out.println("------------小数");
        for (String s : test) {
            System.out.printf("%5b   %s\n", isFloat(s), s);
        }
        System.out.println("------------正小数");
        for (String s : test) {
            System.out.printf("%5b   %s\n", isFloatPositive(s), s);
        }
        System.out.println("------------负小数");
        for (String s : test) {
            System.out.printf("%5b   %s\n", isFloatNegative(s), s);
        }
        System.out.println("------------数字");
        for (String s : test) {
            System.out.printf("%5b   %s\n", isNumber(s), s);
        }
    }
}


利用的jdk中Character的方法判断

package com.ywyself.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Number {

    /**
     * 判断字符数组中的所有的元素是否为数字
     * 
     * @param character
     *            待检查的字符数组
     * @return TRUE|是
     */
    public static boolean isNumberLegal(char[] character) {
        for (char c : character) {
            if (!Character.isDigit(c)) {
                return false;
            }
        }
        return true;
    }

    /**
     * 判断字符串是否为数字,忽略正负数
     * 
     * @param string
     *            待检查的字符串
     * @param ignorePositiveAndNegative
     *            是否忽略正负,TRUE|去除字符串前面的一个“-”号(如果有)
     * @return TRUE|字符串为合法数字
     */
    public static boolean isNumber(String string, boolean ignorePositiveAndNegative) {
        if (string.startsWith("-") && ignorePositiveAndNegative) {
            string = string.substring(1);
        }
        return isNumberLegal(string.toCharArray());
    }

    /**
     * 判断字符串是否全部为数字
     * 
     * @param string
     *            待检查的字符串
     * @return TRUE|字符串为正数或者负数
     */
    public static boolean isNumber(String string) {
        return isNumber(string, true);
    }

    public static void main(String[] args) {
        System.out.println(isNumber("-123"));
        System.out.println(isNumber("-123", false));
        System.out.println(isNumber("123"));
        System.out.println(isNumber("123", false));
    }

}


针对搜索

ywyself

相关推荐