2016-07-11 61 views
0

我需要將這個字符串拆分爲下午3點,所以最終結束爲[3:00] [pm]。以下是我的嘗試,但它不正確,因爲控制檯打印p m如何將字符串拆分爲索引中的數組?

date = '3:00pm' 
var elem = date.slice(date.length-2); 
+1

['.slice()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice)返回一個字符串,而不是陣列。你可能想在這裏使用['.split()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)。 –

回答

5

你可以用兩個不同的切片得到兩個不同的部分。

var date = '3:00pm'; 
 
var arr = [ 
 
    date.slice(0, -2), // first to 2nd from last 
 
    date.slice(-2) // just the last 2 
 
]; 
 
console.log(arr);

0

var date = '3:00pm'; 
 

 
var time = date.substr(0, date.length - 2); // 3:00 
 
var period = date.substr(date.length - 2); // pm 
 

 
console.log(time); 
 
console.log(period);

+1

我會將這兩個點中的4改爲'date.length-2'或'-2',這樣10,11和12也可以工作,並刪除週期線中的2 – depperm

+0

@depperm好點,謝謝。編輯。 – Timo

1

您可以使用String.prototype.match()RegExp/\d+:\d+|\w+/g

var date = "3:00pm" 
 
var elem = date.match(/\d+:\d+|\w+/g); 
 
console.log(elem[0], elem[1])

1

你可以使用正向預測的正則表達式。

console.log("3:00pm".split(/(?=[ap]m)/)); 
 
console.log("11:55am".split(/(?=[ap]m)/));

+0

也許還需要檢查'am' –

+0

@mortezaT,請參閱編輯。 –

+0

這看起來不錯。但我可以知道爲什麼正則表達式而不是簡單的子字符串? –

0

我相信你要分割不僅3:00pm而且其他時間。這裏是一個使用正則表達式的示例。

var re=/([0-9:]+)\s*(am|pm)/i; 
var ar=[]; 
'3:00pm'.replace(re,function(m/*whole match ([0-9:]+)\s*(am|pm)*/, pt1/*([0-9:]+)*/, pt2/*(am|pm)*/){ 
    ar.push(pt1, pt2); //push captures 
    return m; //do not change the string 
}); 
console.log(ar); //["3:00","pm"]