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 匹配出来的全是数字,小数点也给过滤掉了 ···· 急,哪位高手指点指点 先谢谢了! 展开
String regex = "\\D+";// 正则表达式 ,以所有非数字字符为分隔符
String digitWord[] = s.split(regex)
我这个regex 匹配出来的全是数字,小数点也给过滤掉了 ···· 急,哪位高手指点指点 先谢谢了! 展开
4个回答
展开全部
\\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]);
}
}
这个不是分割符,我一会把程序写出来,你稍等一下。
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\\.]");
展开全部
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));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先用replace把[]替换了,然后直接用,分割字符串。再转型就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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");
追问
直接用我那个思路可以吗? 不想大改程序
追答
以所有非数字字符为分隔符---这个确实有点不好搞,得到的数据不能判断哪个是小数位,哪个是整数位啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询