【加紧帖】分离有特定标示的字符串并进行处理

苦苦的潜行者 2011-08-19 08:52:32
公司一个jsp业务,现在亟需要更改,由于公司缺java程序员,我是业余java学习者,领导让我担任,其他大的功能都修改好了。现在就差两个点了。

第一个问题:是在.java立面处理的
有以下字符串
可能为
(第一种) "123446.pdf|78593.pdf|56323.pdf"

(第二种)

"123563.pdf" 这种格式出现。
我需要分离出来,并分别对分离出来的做处理,在文件名前面加上当前日期的前一天\

例如第一种我要的结果是8-18-2011\123446.pdf|8-18-2011\78593.pdf|8-18-2011\56323.pdf (今天8月19号)
第二种我要的结果是8-18-2011\123563.pdf

由于时间紧急,我查了java的字符串处理没有找到如vb的split函数,所以只要来求大家了。

第二个问题是在jsp里面的一个javascript过程里面的(原先只限制为一个数字)
如果字符串不是"4455|52.3|46" "42.3|6|42" "556|52|42.6" "42" "42.3" 就报错,字符串后面不可能以"|"结束
程序原作者的代码是用正则处理的,我一看到正则我就头痛,帮下忙谢谢了,这是原先的代码
	function checkPlanPrice() {	
var planPrice = document.getElementById("planPrice").value;
var planPrice = trim(planPrice);
var regPlanPrice = /^[0-9]+[.0-9]*$/;
if(planPrice == null || planPrice =="") {
return true;
} else {
if(regPlanPrice.test(planPrice)) {
return true;
} else {
alert("PlanPrice 格式错误!");
document.getElementById("planPrice").value="";
document.getElementById("planPrice").focus();
return false;
}
}
}


...全文
112 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
苦苦的潜行者 2011-08-20
  • 打赏
  • 举报
回复
总结帖,
经过测试楼上的代码对于相应的字符串处理都能得到正确的结果。
但是不知道为什么我写入在jsp页面中的javascript就不行。
总之,谢谢各位,结贴!





-----------------------------
...
qybao 2011-08-19
  • 打赏
  • 举报
回复
不知道LZ的意思,是不是这样?
String str = "4455|52.3|46";
String[] ss = str.split("[|]");
for (String s : ss) {
if (! s.matches("\\d+([.]\\d+)?")) {
System.out.printf("%s invalable\n", s);
} else {
System.out.printf("%s OK\n", s);
}
}
qybao 2011-08-19
  • 打赏
  • 举报
回复
没看到还有第二问

String[] ss = {"4455|52.3|46", "42.3|6|42", "556|52|42.6", "42", "42.3"};
for (String s : ss) {
if (! s.matches("\\d+([.]\\d+)?([|]\\d+([.]\\d+)?)*")) {
System.out.printf("%s invalable\n", s);
} else {
System.out.printf("%s OK\n", s);
}
}
qybao 2011-08-19
  • 打赏
  • 举报
回复
for example
String str = "123446.pdf|78593.pdf|56323.pdf";
String[] sa = str.split("[|]");
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("d-M-yyyy");
for (int i=0; i<sa.length; i++) {
//sa[i] = String.format("%td-%tm-%tY/%s", d, d, d, sa[i]);
sa[i] = sdf.format(d) + "/" + sa[i];
System.out.println(sa[i]);
}
剑神一笑 2011-08-19
  • 打赏
  • 举报
回复
^\\d+[.\\d]*(\\|\\d+[.\\d]*)?$
苦苦的潜行者 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iis81365341 的回复:]
第1个问题:str.split("\\|");

第2个问题:/^[0-9]+[.0-9]*(\\|[0-9]+[.0-9]*\\|[0-9]+[.0-9]*)?$/
[/Quote]


帅哥,不知道为什么还是不行,提示不通过
哦,对了这个字符串如果有"|",则只会出现一次

全部格式为"42|42.3" "42.3|42" "42" "42.3"
我将上面改为:/^[0-9]+[.0-9]*(\\|[0-9]+[.0-9]*)?$/还是不通过,我愕然了...



-----------------------------
...
24K純帥 2011-08-19
  • 打赏
  • 举报
回复
split()JAVA里有,还有正则都可以
忧郁的苦笑 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iis81365341 的回复:]
第1个问题:str.split("\\|");

第2个问题:/^[0-9]+[.0-9]*(\\|[0-9]+[.0-9]*\\|[0-9]+[.0-9]*)?$/
[/Quote]



ls说的不错
飓风zj 2011-08-19
  • 打赏
  • 举报
回复
str.split("\\|"); 计算日期就可以了
iis81365341 2011-08-19
  • 打赏
  • 举报
回复
第1个问题:str.split("\\|");

第2个问题:/^[0-9]+[.0-9]*(\\|[0-9]+[.0-9]*\\|[0-9]+[.0-9]*)?$/
liushuo1987 2011-08-19
  • 打赏
  • 举报
回复
JAVA有split函数的。。。。。。
剑神一笑 2011-08-19
  • 打赏
  • 举报
回复
1.String str = "123446.pdf|78593.pdf|56323.pdf";
String[] str1 = str.split("[|]");//\\|也可以
System.out.println(Arrays.toString(str1));
苦苦的潜行者 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qybao 的回复:]
不知道LZ的意思,是不是这样?

Java code
String str = "4455|52.3|46";
String[] ss = str.split("[|]");
for (String s : ss) {
if (! s.matches("\\d+([.]\\d+)?")) {
System.out.printf("%s invalable\n……
[/Quote]

不是,这是两个独立的问题,不过,多谢阿宝了,从我刚开始接触java,你就在热心的回答我的问题

临时总结帖
谢谢各位了,到现在第四天终于把这个项目修改完毕,累死我了。
第一个问题,确实是用split解决了。
第二个问题由于多次测试没有通过,结果



-----------------------------
...我就把这个检测功能给注释掉了。
过会,我会测试每一个楼,看看哪些代码是正确的,然后分配分数。

62,614

社区成员

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

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