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

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

String regex = "\\D+";// 正则表达式 ,以所有非数字字符为分隔符
String digitWord[] = s.split(regex)
我这个regex 匹配出来的全是数字,小数点也给过滤掉了 ···· 急,哪位高手指点指点 先谢谢了!
展开
 我来答
fuhaiwei
推荐于2018-05-10 · TA获得超过3409个赞
知道大有可为答主
回答量:974
采纳率:75%
帮助的人:1364万
展开全部
\\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\\.]");
查幻迩05
2013-05-02 · 超过11用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:36.8万
展开全部
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));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
llei32wang
2013-05-02 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1381万
展开全部
先用replace把[]替换了,然后直接用,分割字符串。再转型就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我是板蓝根
2013-05-02 · TA获得超过1723个赞
知道小有建树答主
回答量:2011
采纳率:33%
帮助的人:900万
展开全部
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");
追问
直接用我那个思路可以吗? 不想大改程序
追答
以所有非数字字符为分隔符---这个确实有点不好搞,得到的数据不能判断哪个是小数位,哪个是整数位啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式