对于字符串:
'29 July, 2014, 30 July, 2014, 31 July, 2014'
如何分割字符串中的每一秒逗号?所以我的结果是:
[0] => 29 July, 2014
[1] => 30 July, 2014
[2] => 31 July, 2014
答案 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);