论坛首页 Web前端技术论坛

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

浏览 6977 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-28  

需求:
    格式: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-07-28  
何必用正则
split(';')
然后在split(',')[0]
再拼接就是了
0 请登录后投票
   发表时间:2011-07-28  
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("|"));
0 请登录后投票
   发表时间:2011-07-29   最后修改:2011-07-29
用replace就行了。为什么要先split 再 join , 不用切了再连,绕弯了。
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(/\|$/,'')
1 请登录后投票
   发表时间:2011-07-29  
feige05 写道
用replace就行了。为什么要先split 再 join , 不用切了再连,绕弯了。
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(/\|$/,'')

也是哈。。。 通常这种数据解析出来都会作处理,或者存下来供其它逻辑使用,所以习惯性了……
0 请登录后投票
   发表时间:2011-07-29  
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("|"));

 

 

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

0 请登录后投票
   发表时间:2011-07-29  
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("|"));

 

 

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


都他娘的是高手..
0 请登录后投票
   发表时间:2011-07-29  
奥义之舞 写道
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("|"));

 

 

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


都他娘的是高手..

我不是他娘。。

0 请登录后投票
   发表时间:2011-07-29  
同意4楼的feige05
0 请登录后投票
   发表时间:2011-07-29  
采用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 "字符串不存在";



}
}
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics