java 获取String中的数字

随便给你一个含有数字的字符串,比如:
String s="eert343dfg56756dtry66fggg89dfgf";

那我们如何把其中的数字提取出来呢?大致有以下几种方法,正则表达式,集合类,还有就是String类提供的方法。

1 String类提供的方法:

package 测试练习;
import java.util.*;
 public class get_StringNum {

/**
 *2012.6.2
 */

public static void main(String[] args) {
String str = "love23next234csdn3423javaeye";
str=str.trim();
String str2="";
if(str != null && !"".equals(str)){
for(int i=0;i<str.length();i++){
if(str.charAt(i)>=48 && str.charAt(i)<=57){
str2+=str.charAt(i);
}
}

}
System.out.println(str2);
}

 }

output:

232343423

这个方法有个明显的缺点,只能把数字全部提取到一起,不能分别提取。当然也可以改进,有兴趣的朋友可以试试。

2 正则表达式

import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 public class get_StringNum {

/**
 *2012.6.2
 */

public static void main(String[] args) {
String a="love23next234csdn3423javaeye";
String regEx="[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(a);
System.out.println( m.replaceAll("").trim());
}

 }

output:

232343423

Pattern ,Matcher是java.util.regex软件包里的两个类,具体用法大家可以查阅一下api。同样也不能单个提取数字。

3 集合类库

import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 public class get_StringNum {

/**
 *2012.6.2
 */

public static void main(String[] args) {
   String a="love23next234csdn3423javaeye";
List<String> digitList = new ArrayList<String>();
Pattern p = Pattern.compile("[^0-9]");
Matcher m = p.matcher(a);
String result = m.replaceAll("");
for (int i = 0; i < result.length(); i++) {
digitList.add(result.substring(i, i+1));

}
System.out.println(digitList);

}

 }

output:

[2, 3, 2, 3, 4, 3, 4, 2, 3]

相同的思路:

import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 public class get_StringNum {

/**
 *2012.6.2
 */

public static void main(String[] args) {
                String a="love23next234csdn3423javaeye";
        List<String> ss = new ArrayList<String>();
        for(String sss:s.replaceAll("[^0-9]", ",").split(",")){
            if (sss.length()>0)
                ss.add(sss);
        }
        System.out.print(ss);

}

 }

output:

[2, 3, 2, 3, 4, 3, 4, 2, 3]
很明显,利用正则表达式我们就可以分别提取数字了。
另外还有一个利用查阅文档找出的答案,如下:

/*** 从字符串文本中获得数字  

*@paramtext  

*@return 

*/ 

publicstaticList<Long>getDigit(String text) {  

List<Long>digitList =newArrayList<Long>(); 

Pattern p=Pattern.compile("(\\d+)"); 

Matcher m=p.matcher(text);  

while(m.find()) {  

String find=m.group(1).toString();  

digitList.add(Long.valueOf(find));  

}returndigitList;  

}
 // 判断一个字符串是否都为数字
 public boolean isDigit(String strNum) {
    return strNum.matches("[0-9]{1,}");
}
 // 判断一个字符串是否都为数字
 public boolean isDigit(String strNum) {
    Pattern pattern = Pattern.compile("[0-9]{1,}");
    Matcher matcher = pattern.matcher((CharSequence) strNum);
     return matcher.matches();
 }
    //截取数字
    public String getNumbers(String content) {
        Pattern pattern = Pattern.compile("\\d+");
        Matcher matcher = pattern.matcher(content);
       while (matcher.find()) {
            return matcher.group(0);
        }
        return "";
    }
 // 截取非数字
 public String splitNotNumber(String content) {
     Pattern pattern = Pattern.compile("\\D+");
     Matcher matcher = pattern.matcher(content);
     while (matcher.find()) {
         return matcher.group(0);
     }
    return "";
 }  

原文地址:https://www.cnblogs.com/xinxin1994/p/10822754.html

时间: 2024-08-02 23:39:53

java 获取String中的数字的相关文章

java取出string中的数字

String regEx="[^0-9]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(etCoustom.getText().toString()); String trim = m.replaceAll("").trim();

java从字符串中提取数字

1.做一下操作时会一般会用到提取数字操纵: a.列表中有翻页,当新添加的数据不是放在第一条或者最后一条时,需要翻页并循环找到对应的那条数据 b.当新添加的数据放在第一条或者最后一条时,则不需要翻页,只需要直接进入该页面然后直接找到第一条或者最后一条数据即可. 2.例子: 界面: javs代码: /** * java从字符串中提取数字 * str:传递过来的字符串 */ public static List<String> getNUm(String str){ str.trim(); //St

C# 获取字符串中的数字

/// <summary> /// 获取字符串中的数字(不包含小数点) /// </summary> /// <param name="str">要进行筛选的字符串</param> /// <returns></returns> public static long GetStrNumber(string str) {   long result = 0;   if (str != null &&

java截取字符串中的数字

java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取出来呢?大致有以下几种方法,正则表达式,集合类,还有就是String类提供的方法. 1 String类提供的方法: package 测试练习; import java.util.*; public class get_StringNum { /**  *2012.6.2  */ public static v

jAVA 获取Map中的值

jAVA 获取Map中的值 Map<String, String> map=new HashMap<String, String>(); map.put("name", "饶伟"); map.put("sex", "男"); map.put("address", "大连"); 方法1 for (Map.Entry<String, String> Map

java 获取局域网中的所有主机名和IP地址

DOS命令 命令 意义 net view 获取局域网中的所有主机名 ipconfig -all 获取本地IP,主机名,MAC地址 arp -a 获取本局域网中的所有IP地址和物理地址 ping -a x.x.x.x 获取x.x.x.x的主机名 nbtstat -a 主机名 获取MAC地址 java exec 执行外部命令 String command = "net view" Runtime r = Runtime.getRuntime(); Process p = r.exec(co

Java的String中的subString()方法

public String substring(int beginIndex, int endIndex) 第一个int为开始的索引,对应String数字中的开始位置, 第二个是截止的索引位置,对应String中的结束位置 1.取得的字符串长度为:endIndex - beginIndex; 2.从beginIndex开始取,到endIndex结束,从0开始数,其中不包括endIndex位置的字符 如: "hamburger".substring(4, 8) returns "

java.lang.String 中 API 的使用

1 /** 2 * java.lang.String: 3 * 复制字符串内容到字节数组中: 4 * 字符串连接:一个字符串添加到另一个字符串后面: 5 * 替换:字符替换.字符串替换: 6 * 匹配和替换: 7 * 多种类型数据转成字符串类型: 8 * 字符串与字符数组的转换: 9 * 判断是否包含字符串: 10 * 字节数组与字符串的转换: 11 */ 12 package lang; 13 14 import java.util.Arrays; 15 16 public class Str

java获取url中的参数

获取地址栏中的url中的userName的值 String userName=new String(request.getParameter("userName")); 获取中文的需要转码 String truename_user=new String(request.getParameter("truename_user").getBytes("ISO8859_1"),"utf-8");