在javascript中拆分每秒逗号

时间:2014-07-24 09:40:53

标签: javascript

对于字符串:

'29 July, 2014, 30 July, 2014, 31 July, 2014'

如何分割字符串中的每一秒逗号?所以我的结果是:

[0] => 29 July, 2014
[1] => 30 July, 2014
[2] => 31 July, 2014

6 个答案:

答案 0 :(得分:12)

或者这个:

var text='29 July, 2014, 30 July, 2014, 31 July, 2014';
result=text.match(/([0-9]+ [A-z]+, [0-9]+)/g);

UPD: 您可以使用此regExp查找所有匹配项:

//    result=text.match(/[^,]+,[^,]+/g);

    var text='string1, string2, string3, string4, string5, string 6';
    result=text.match(/[^,]+,[^,]+/g);

/*
result: 
string1, string2
string3, string4
string5, string 6
*/

答案 1 :(得分:3)

您可以使用正则表达式进行拆分。例如:

var s = '29 July, 2014, 30 July, 2014, 31 July, 2014';
s.split(/,(?= \d{2} )/)

返回

["29 July, 2014", " 30 July, 2014", " 31 July, 2014"]

如果所有日期的日期部分都有2位数,则此工作正常;即7月1日将于7月1日印刷。

reg exp正在使用前瞻,所以如果接下来的四个字符是[空格] [数字] [数字] [空格]"它会说"用逗号分隔。


编辑 - 我刚刚通过允许一位或两位数字改进了这一点,因此下一版本将涉及2014年7月1日以及2014年7月1日:

s.split(/,(?= \d{1,2} )/)

编辑 - 我注意到我和SlyBeaver的努力都没有处理空白;第二和第三个日期都有前导空格。这是一个修剪空白的拆分解决方案:

s.split(/, (?=\d{1,2} )/)

将有问题的空间转移到分隔符中,该分隔符将被丢弃。

["29 July, 2014", "30 July, 2014", "31 July, 2014"]

答案 2 :(得分:2)

我知道差不多两年了。

此功能可重复使用。

String.prototype没有必要让它工作..但它很容易..

String.prototype.splitEvery = function ( splitter, every ){

    var array = this.split( splitter), newString = '', thisSplitter; 

    $.each( array, function( index, elem ){ 

        thisSplitter = ( index < array.length - 1 || index % every === 0 ) ? '' : splitter;

        newString += elem + thisSplitter;                                                               
    });          

    return newString;                                                                                   
};  


var dateString = '29 July, 2014, 30 July, 2014, 31 July, 2014';

在这种情况下的用法是:

dateString.splitEvery( ',', 2 );

第一个参数是拆分, 第二个是每个之间有多少。

结果是:

29 July 2014, 30 July 2014, 31 July 2014

答案 3 :(得分:1)

喜欢这个

 var str = '29 July, 2014, 30 July, 2014, 31 July, 2014'

 var parts = str.split(',')

 var answer = []

 for (var i=0; i<parts.length; i++) {
        if (i < 1) continue;
        if (i % 2 == 1) {
           answer.push(parts[i-1] + ',' + parts[i]);
        }
 }

 console.log(answer)

答案 4 :(得分:1)

不确定您是否可以在单行中执行此操作,但解决方法是在每个逗号上拆分,然后加入连续值。

例如:

var str = '29 July, 2014, 30 July, 2014, 31 July, 2014';
var list = str.split(",");
var list2 =[];
for (var i=0;i<list.length; i+=2){
    list2.push(list[i]+","+list[i++]);
}

答案 5 :(得分:0)

这不是重构的解决方案,但它有效:

var $dates = '29 July, 2014, 30 July, 2014, 31 July, 2014';
$dates = $dates.split(',');
$result = [];
$dateValue = '';

for($i=0 ; $i<$dates.length ; $i++) {
if($i % 2 != 0 && $i > 0) {
            $dateValue += ','+$dates[$i];
    $result.push($dateValue);
    $dateValue = '';
} else {
    $dateValue += $dates[$i];
}
}

console.log($result);