java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”

本文提供多种方法用于判断Java字符串是否全为数字,包括使用正则表达式、ASCII码及JAVA内置函数等方式,并附带示例代码。

原文地址:http://ahomeeye.iteye.com/blog/842922

http://cherryqq.iteye.com/blog/406355

在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断方法,如下; 

Java代码   收藏代码
  1. // 判断一个字符串是否都为数字  
  2. public boolean isDigit(String strNum) {  
  3.     return strNum.matches("[0-9]{1,}");  
  4. }  
  5.   
  6. // 判断一个字符串是否都为数字  
  7. public boolean isDigit(String strNum) {  
  8.     Pattern pattern = Pattern.compile("[0-9]{1,}");  
  9.     Matcher matcher = pattern.matcher((CharSequence) strNum);  
  10.     return matcher.matches();  
  11. }

  12. //截取数字  
  13. public String getNumbers(String content) {  
  14.     Pattern pattern = Pattern.compile("\\d+");  
  15.     Matcher matcher = pattern.matcher(content);  
  16.     while (matcher.find()) {  
  17.        return matcher.group(0);  
  18.     }  
  19.     return "";  
  20. }  
  21.   
  22. // 截取非数字  
  23. public String splitNotNumber(String content) {  
  24.     Pattern pattern = Pattern.compile("\\D+");  
  25.     Matcher matcher = pattern.matcher(content);  
  26.     while (matcher.find()) {  
  27.         return matcher.group(0);  
  28.     }  
  29.     return "";  
  30. }  
  31. // 判断一个字符串是否含有数字
    public boolean hasDigit(String content) {
    boolean flag = false;
    Pattern p = Pattern.compile(".*\\d+.*");
    Matcher m = p.matcher(content);
    if (m.matches())
    flag = true;
    return flag;
    }
java中判断字符串是否为数字的三种方法 
1用JAVA自带的函数 
public static boolean isNumeric(String str){ 
  for (int i = str.length();--i>=0;){   
   if (!Character.isDigit(str.charAt(i))){ 
    return false; 
   } 
  } 
  return true; 


2用正则表达式 
public static boolean isNumeric(String str){ 
    Pattern pattern = Pattern.compile("[0-9]*"); 
    return pattern.matcher(str).matches();    


3用ascii码 

public static boolean isNumeric(String str){ 
   for(int i=str.length();--i>=0;){ 
      int chr=str.charAt(i); 
      if(chr<48 || chr>57) 
         return false; 
   } 
   return true; 

<think>我们有一个字符串,例如"1:2",我们需要判断冒号前的部分冒号后的部分是否都是数字。 步骤: 1. 找到冒号的位置。 2. 分别取出冒号前面的子字符串后面的子字符串。 3. 判断这两个子字符串是否都是数字。 我们可以使用String类的split方法按冒号分割字符串,然后对分割后的两个字符串分别进行判断判断一个字符串是否数字,我们可以使用正则表达式,或者尝试将其转换为数字(比如使用Integer.parseInt,但要注意异常),或者使用Character.isDigit逐个字符判断。 但是注意:字符串可能不止两个部分,或者可能没有冒号。所以我们需要考虑这些情况。 根据需求,我们只考虑字符串中恰好有一个冒号,并且分成两部分的情况。如果不符合这个格式,我们可以返回false。 方法: 1. 使用indexOf找到冒号的位置,如果找不到冒号,返回false。 2. 检查冒号前面是否为空,冒号后面是否为空,如果有一个为空,则不是数字(因为数字至少一位,但这里如果允许空则不同,题目要求是数字,所以空字符串不是数字)。 3. 分别截取前后两部分,然后判断这两部分是否都是数字判断是否数字的方法有多种: 方法一:使用正则表达式:str.matches("[0-9]+") 表示一个或多个数字。 方法二:遍历每个字符,使用Character.isDigit判断。 这里我们选择正则表达式方法,因为它简洁。 但是注意:如果数字可能有负数符号?题目没有说,但是原字符串是"1:2",所以应该都是正整数。因此我们按正整数处理。 代码步骤: 1. 检查字符串是否包含冒号,并且只有一个冒号?但是我们只取第一个冒号,所以如果有多个,我们只按第一个分割。题目要求是冒号前后,所以第一个冒号的前面后面。 2. 使用split(":", 2)可以分割成两部分,这样避免多个冒号时分割成多部分。 具体代码如下: </think>### Java判断字符串冒号前后是否数字的方法 #### 解决方案步骤: 1. **分割字符串**: - 使用 `split(":")` 按冒号分割字符串 - 验证分割后数组长度是否为2,确保只有一个冒号 2. **数字验证**: - 使用正则表达式 `\d+` 匹配纯数字 - 分别验证冒号前后的子字符串 3. **完整验证逻辑**: ```java public static boolean isNumericAroundColon(String input) { String[] parts = input.split(":"); if (parts.length != 2) return false; // 确保只有一个冒号 return parts[0].matches("\\d+") && // 冒号前验证 parts[1].matches("\\d+"); // 冒号后验证 } ``` #### 使用示例: ```java public static void main(String[] args) { String testStr = "1:2"; boolean result = isNumericAroundColon(testStr); System.out.println("验证结果: " + result); // 输出 true } ``` #### 关键说明: 1. **正则表达式 `\d+`**: - `\d` 匹配单个数字字符(等价于 `[0-9]`) - `+` 表示匹配1个或多个数字 - 需注意转义字符写法 `"\\d+"` 2. **边界情况处理**: - 空字符串:`matches` 会自动返回 false - 多冒号:通过长度检查排除 - 符号问题:该方法仅支持正整数,如需负数需改用 `^-?\d+$` 3. **String不可变性**: - `split()` 返回新字符串数组,原始字符串不受影响(符合String不可变特性)[^2] #### 扩展建议: - 若需处理小数或负数,修改正则表达式为 `^-?\d+(\.\d+)?$` - 考虑使用 `NumberUtils.isDigits()` (Apache Commons Lang) 简化验证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值