java中正则表达式用于提取浮点类型数据 急

是这样的:我要处理[1,2,22.4,34,44.8,55.2] 这样一个格式的字符串。我要得到其中有整数也有小数,都以逗号为分隔符。 我的思路是这样的 通过一个正则式 regex 先将其分割成包含这些数的子字符串再转成浮点型数据。 现在问题是:这个分割用的regex 该怎么写呢??

String regex = "\\D+";// 正则表达式 ,以所有非数字字符为分隔符
String digitWord[] = s.split(regex)
我这个regex 匹配出来的全是数字,小数点也给过滤掉了 ···· 急,哪位高手指点指点 先谢谢了!

\\d+(\\.\\d+)?
这个不是分割符,我一会把程序写出来,你稍等一下。

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

public class T {

public static void main(String[] args) {
String[] strings = matcher("[1,2,22.4,34,44.8,55.2]");
for (int i = 0; i < strings.length; i++) {
System.out.println(strings[i]);
}
}

private static Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?");

public static String[] matcher(String input) {
Matcher matcher = pattern.matcher(input);
List<String> list = new ArrayList();
while (matcher.find()) {
list.add(matcher.group());
}
return list.toArray(new String[0]);
}

}追问

追答

写好了,你可以用我写的matcher方法,处理你的字符串,这个方法返回一个String数组。

把下面的代码复制到你的程序中就能用了。

private static Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?");

public static String[] matcher(String input) {
Matcher matcher = pattern.matcher(input);
List list = new ArrayList();
while (matcher.find()) {
list.add(matcher.group());
}
return list.toArray(new String[0]);
}

或者你也可以用这个方法。
String[] digitWord = "[1,2,22.4,34,44.8,55.2]".substring(1).split("[^\\d\\.]");

追问

你测试过了吗? 我贴上去就这行报错 List list = new ArrayList();提示:
type List does not take parameters

追答

你还是用这个方法吧


String[] digitWord = "[1,2,22.4,34,44.8,55.2]".substring(1).split("[^\\d\\.]");


当然测试过了才发的。

是不是你导入错误。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-02
String s = "[1,2,22.4,34,44.8,55.2]";
java.util.regex.Pattern p = java.util.regex.Pattern.compile("(\\d+\\.\\d+)");
java.util.regex.Matcher m = p.matcher(s);
while (m.find()) {
    //依次输出22.4 44.8 55.2
    System.out.println(m.group(1));
}

第2个回答  2013-05-02
先用replace把[]替换了,然后直接用,分割字符串。再转型就行了。
第3个回答  2013-05-02
String testString ="[1,2,22.4,34,44.8,55.2]" ;
Pattern pattern = Pattern.compile("[\\d\\.]+");
Matcher matcher = pattern.matcher(testString);
while(matcher.find())
{
System.out.println(matcher.group()); //打印
}
System.out.println("over");

追问

直接用我那个思路可以吗? 不想大改程序

追答

以所有非数字字符为分隔符---这个确实有点不好搞,得到的数据不能判断哪个是小数位,哪个是整数位啊。

相似回答