请实现一个函数用来判断字符串是否表示数值(包括整数和小数)

费玺 2016-11-02 10:02:09
题目
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
下面是我写的正则,请问错的哪了


String s="\\(\\(\\+|-\\)?\\d+\\)|\\(\\(\\+|-\\)?\\d+\\(e|E\\)\\(\\+|-\\)?\\d+\\)|\\(\\(\\+|-\\)?\\d+\\.\\d+\\)";
...全文
320 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickylin86 2016-11-03
  • 打赏
  • 举报
回复

public class Test{
	public static void main(String[] args){
		String[] numbers = {"+100","5e2","-123","3.1416","-1E-16","12e","1a3.14","1.2.3","+-5","12e+4.3"};
		for(String number : numbers){
			System.out.printf("'%s' %s number.\n",number,valid(number) ? "is" : "is not");
		}
	}

	private static boolean valid(String number){
		String regex = "[+-]?\\d+(\\.\\d+)?([Ee]\\d+)?";
		return number.matches(regex);
	}
}
解开者 2016-11-02
  • 打赏
  • 举报
回复
只是实现功能的话,直接调用工具方法就行了
import java.util.Optional;

import com.google.common.collect.ImmutableList;
import com.google.common.primitives.Doubles;

public class Test {
	public static void main(String... args) {
		String[] ss = new String[] { "+100", "5e2", "-123", "3.1416", "-1E-16" , "hello" };
		ImmutableList.copyOf(ss).stream().map(s -> Optional.ofNullable(Doubles.tryParse(s)).isPresent()).forEach(System.out::println);
	}
}
qq_35189707 2016-11-02
  • 打赏
  • 举报
回复
如果“+++-9”算是的话正则应该这么写String s="[+,-]*\\d*[a,e]?\\d*[.]?\\d*[+,-]?\\d*[a,e]?\\d*[.]?\\d*"; 如果不算的话String s="[+,-]?\\d*[a,e]?\\d*[.]?\\d*[+,-]?\\d*[a,e]?\\d*[.]?\\d*";就是这样 正则里面没有或这种关键子应该这样写[+,-]

62,615

社区成员

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

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