职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 375|回复: 9

征求更好的实现方法...

[复制链接]
楠楠 发表于 2011-8-20 09:30 | 显示全部楼层 |阅读模式
需求:
    格式:123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;.....(很多很多...)
    输出:123abc|456abc|&%$#|una89
我的实现方法如下,欢迎大家贴出好的想法
var str="123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;";
var re=/([^,]*),([^;]*);/g,txt,rs=[];
while((txt=re.exec(str))!=null){
     rs.push(txt[1]);
}
alert(rs.join("|"));


能文能武 发表于 2011-8-20 09:30 | 显示全部楼层
何必用正则
split(';')
然后在split(',')[0]
再拼接就是了


月上萧萧 发表于 2011-8-20 09:31 | 显示全部楼层
Js代码  
var arr = "123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;".split(/,\d{4}\-\d\d\-\d\d \d\d:\d\d;/);   
arr.pop();   
alert(arr.join("|"));  

var arr = "123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;".split(/,\d{4}\-\d\d\-\d\d \d\d:\d\d;/);
arr.pop();
alert(arr.join("|"));


叫我小乖 发表于 2011-8-20 09:31 | 显示全部楼层
用replace就行了。为什么要先split 再 join , 不用切了再连,绕弯了。
Java代码  
var str="123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;";   
str=str.replace(/,\d{4}-\d{2}-\d{2}\s\d{2}:\d{2};/g,'|').replace(/\|$/,'')  

var str="123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;";
str=str.replace(/,\d{4}-\d{2}-\d{2}\s\d{2}:\d{2};/g,'|').replace(/\|$/,'')


爱车车 发表于 2011-8-20 09:31 | 显示全部楼层
feige05 写道
用replace就行了。为什么要先split 再 join , 不用切了再连,绕弯了。
Java代码  
var str="123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;";   
str=str.replace(/,\d{4}-\d{2}-\d{2}\s\d{2}:\d{2};/g,'|').replace(/\|$/,'')  

var str="123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;";
str=str.replace(/,\d{4}-\d{2}-\d{2}\s\d{2}:\d{2};/g,'|').replace(/\|$/,'')

也是哈。。。 通常这种数据解析出来都会作处理,或者存下来供其它逻辑使用,所以习惯性了……

江南枫 发表于 2011-8-20 09:31 | 显示全部楼层
hehoha_wj 写道
需求:
    格式:123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;.....(很多很多...)
    输出:123abc|456abc|&%$#|una89
我的实现方法如下,欢迎大家贴出好的想法
var str="123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;";
var re=/([^,]*),([^;]*);/g,txt,rs=[];
while((txt=re.exec(str))!=null){
     rs.push(txt[1]);
}
alert(rs.join("|"));


,日期时间; 替换成| 就搞定了,没必要太复杂

天上智喜 发表于 2011-8-20 09:32 | 显示全部楼层
Reset 写道
hehoha_wj 写道
需求:
    格式:123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;.....(很多很多...)
    输出:123abc|456abc|&%$#|una89
我的实现方法如下,欢迎大家贴出好的想法
var str="123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;";
var re=/([^,]*),([^;]*);/g,txt,rs=[];
while((txt=re.exec(str))!=null){
     rs.push(txt[1]);
}
alert(rs.join("|"));


,日期时间; 替换成| 就搞定了,没必要太复杂

都他娘的是高手..

Jethro 发表于 2011-8-20 09:32 | 显示全部楼层
奥义之舞 写道
Reset 写道
hehoha_wj 写道
需求:
    格式:123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;.....(很多很多...)
    输出:123abc|456abc|&%$#|una89
我的实现方法如下,欢迎大家贴出好的想法
var str="123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;";
var re=/([^,]*),([^;]*);/g,txt,rs=[];
while((txt=re.exec(str))!=null){
     rs.push(txt[1]);
}
alert(rs.join("|"));


,日期时间; 替换成| 就搞定了,没必要太复杂

都他娘的是高手..
我不是他娘。。

话说我当年 发表于 2011-8-20 09:32 | 显示全部楼层
同意4楼的feige05

木已 发表于 2011-8-20 09:32 | 显示全部楼层
采用split()方法实现的具体代码。此代码兼容分号前面有1个或者多个逗号的形式。譬如:aa,bb;aa,bb;  aa,aa,bb;aa,aa,bb; 等等。
代码

package cn.Aaron.j2se;

public class Sample {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str ="123abc,2011-09-08 11:22;456abc,2011-09-08 11:22;8&%$#,2011-09-08 11:22;una89,2011-09-08 11:22;";

System.out.println(function(str));
}

public  static String function(String s){
StringBuffer sb = new StringBuffer();
//先判断字符串是否长度大于0

if(s.length()>0){
if(s.indexOf(",")==-1 || s.indexOf(";")==-1){
return "字符串输入格式不对";
}
if(s.indexOf(",")>s.indexOf(";")){
return "字符串输入格式不对";
}
if(s.indexOf(",")!=-1 && s.indexOf(";")!=-1){
//根据分号将字符串分成若干个小字符串。
String[] str1 = s.split(";");
for(int i=0;i<str1.length;i++){
//对于每一个以分号为分隔符的数组中的元素在以逗号分隔
String str2[] = str1[i].split(",");
for(int j =0;j<str2.length-1;j++){

sb.append(str2[j]);
sb.append("|");
}
}
}

return sb.toString();
}

else
return "字符串不存在";



}
}

您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-26 18:13 , Processed in 0.148073 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表