???如何用正则从字符串中提取float型数字???

大黄鸭在发光 2011-03-22 08:20:49
string str = “141800Z --- NEAR 13.5N 137.7E”;
最后能得到数组,数组里放{141800,13.5,137.7}
谢谢大家!!
...全文
612 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
看着奢扣 2011-04-22
  • 打赏
  • 举报
回复

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

//正则表达式测试
public class RegularExpressionTest {
public static void main(String[] args) {
String waitToMatch1 = "141800Z --- NEAR 13.5N 137.7E";
Pattern pattern = Pattern.compile("\\d+.\\d+");
Matcher matcher = pattern.matcher(waitToMatch1);
printMatcher(matcher);
}
private static void printMatcher(Matcher matcher) {
ArrayList aClass = new ArrayList();
while (matcher.find()) {
//System.out.println(matcher.group());
aClass.add(matcher.group());
}
System.out.println(aClass);
}
}

打印
[141800, 13.5, 137.7]
看着奢扣 2011-03-23
  • 打赏
  • 举报
回复
split("[^0-9.]")
把数字和小数点以外的东西作为分隔符,得到数字
caibird1024 2011-03-22
  • 打赏
  • 举报
回复
String[] strs = str.split("[a-zA-Z\\- ]");
for(int i=0;i<strs.length;i++){
if(!"".equals(strs[i])){
System.out.println(strs[i]);
}
}
eXeSP 2011-03-22
  • 打赏
  • 举报
回复

String str = "141800Z --- NEAR 13.5N 137.7E";
String [] ss = str.split("([-a-zA-Z]\\s*)++");


141800
13.5
137.7
zqfddqr 2011-03-22
  • 打赏
  • 举报
回复

public class s {

public static void main(String[] args) {
String s = "141800Z --- NEAR 13.5N 137.7E";
double[] d = new double[3];
int i = 0;
for (String ss : s.split("[^0-9.]")) {
if (!ss.equals("")) {
System.out.println(ss);
d[i++]=Double.valueOf(ss);
}
}
for(double dd:d)
System.out.println(dd);
}
}


141800
13.5
137.7
141800.0
13.5
137.7
ddyouyue 2011-03-22
  • 打赏
  • 举报
回复
(?:\\-)?\\d{1,}(?:\\.\\d{1,})?

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧