求一个正则表达式或者能解决的办法

安卓机器人 2012-01-11 08:53:05
一个输入框能输入字符串,有如下要求
1.可以是0123456789,.中的任意一个
2.为了保证合法性,字符串最多只能包含一个","或者".",为了保证合法性,如果有"."必须在","之前
3.","(西方的小数点位)最多只能有两位有效数字
4.把这个字符串转化为国际标准数字,如“19,99”转换为"19.99",“1.999,99”转化为"1999.99"
最后谢谢各位了,分数不是一定的,只要能解决问题,再送上更多分数
...全文
175 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2012-01-12
  • 打赏
  • 举报
回复
3楼的同学,你那个格式化的应该有问题。

如果本来数字就是 20,00.99 你格式化后变成了 20.0099 ,应该是不对的。
beiouwolf 2012-01-12
  • 打赏
  • 举报
回复
请参考easyui-numberbox
影子魔术师 2012-01-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ldh911 的回复:]

3楼的同学,你那个格式化的应该有问题。

如果本来数字就是 20,00.99 你格式化后变成了 20.0099 ,应该是不对的。
[/Quote]

看清题意: .在,之前
安卓机器人 2012-01-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 beiouwolf 的回复:]

jquery插件库
www.jeasyui.com
可以单独使用里面的numberbox插件
http://www.jeasyui.com/documentation/numberbox.php
[/Quote]
嗯,谢谢提醒
Ganymede 2012-01-12
  • 打赏
  • 举报
回复
import java.util.Scanner;

public class TestOutStream
{
public static void main(String[] args)
{

Scanner s = new Scanner(System.in);

String num = s.nextLine();

boolean b = num.matches("\\d+[\\.]?[\\d]+(,{1}[\\d]{2})|\\d*");

System.out.println(b);

if (b)
{
num = num.replaceAll("\\.", "").replaceAll(",", "\\.");

System.out.println(num);
}

}

}

应该问题不大,如果我没理解错题意的话,用户自己输入数字。
beiouwolf 2012-01-12
  • 打赏
  • 举报
回复
jquery插件库
www.jeasyui.com
可以单独使用里面的numberbox插件
http://www.jeasyui.com/documentation/numberbox.php
安卓机器人 2012-01-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 beiouwolf 的回复:]

请参考easyui-numberbox
[/Quote]
请问下这个东西是干什么的,主要的使用领域
安卓机器人 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qybao 的回复:]
for example

Java code


String[] data = {"19,99", "1.999,99", "12,999", "122.999", "20,00.99"}; //测试数据
String regex = "\\d+[.]?\\d*([,]\\d{2})?"; //正则
for (String s : data) {
if (s.matche……
[/Quote]
谢谢了
qybao 2012-01-11
  • 打赏
  • 举报
回复
for example

String[] data = {"19,99", "1.999,99", "12,999", "122.999", "20,00.99"}; //测试数据
String regex = "\\d+[.]?\\d*([,]\\d{2})?"; //正则
for (String s : data) {
if (s.matches(regex)) {
System.out.printf("[%s] is ok. ", s);
s = s.replace(".", "").replace(",", ".");
System.out.printf("after replace, [%s]\n", s);
} else {
System.out.printf("[%s] is not ok.\n", s);
}
}
yaoweijq 2012-01-11
  • 打赏
  • 举报
回复
还是写程序解决吧
MiceRice 2012-01-11
  • 打赏
  • 举报
回复
这里面是两个问题:
1、合规性检查,这个用正则表达式一定能解决;
2、格式化,这个要写点代码搞定。

62,623

社区成员

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

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