2010-12-10 12 views
4

を分割する私は、次のようなデータを取得する:Javascriptを:時間と情報がサーバから

"07.00 PROGRAM DESCRIPTION" 
"07.20 PROGRAM DESCRIPTION 2" 

私のような2インデックス付きの配列にそれらを分割したい:["07.00", "PROGRAM DESCRIPTION 2"]。記述部分には重複スペースが含まれているので、通常の分割( "")は動作しません。

私はどんな提案にも感謝します。

よろしく

答えて

0

ストリング方法:

var time = row.substring(0,4); 
var description = row.substring(5); 

あるいは、分割方法で:

row = row.split(" ",1); 

2番目のパラメータが分割の最大数である...ので、それは最初のスペースでのみ分割されます。 編集:これは機能しません。代わりに、最初の方法を使用します。あなたの配列を取得するために、

var parts = str.split(' '), 
    time = parts.shift(), 
    description = parts.join(' '); 

のか:

+0

ああ、私はあなたの分割( ""、1)を+1しようとしていましたが、明らかに残りの分割を破棄します:http://www.w3schools.com/jsref/jsref_split .asp :( –

+0

Damnit !!!私は気づいていませんでした。 –

2

あなたは使用することができ

var parts = str.split(' '); 
parts[1] = parts.slice(1).join(' '); 

;)

2

は、あなたが信頼できるパターンのsomekindを必要としています。それはいつもだ場合は、ちょうどあなたの最初の空白文字の間で分割する必要がある場合は行うことができます。

var blub = "07.00 PROGRAM DESCRIPTION", 
    pos = blub.indexOf(" "), 
    arr = []; 

arr[0] = blub.slice(0, pos); 
arr[1] = blub.slice(pos + 1); 

またはあなただけの正規表現を使用する場合がありますが。私はそのフィールド上の天才のふりをしていないので、ここで私の小さな提案です:

var blub = "07.00 PROGRAM DESCRIPTION", 
    arr = /(\d+\.\d+)\s(.*)/.exec(blub); 
1
var pattern = /([0-9]{2}\.[0-9]{2})\s(.+)/; 
var data = "07.00 PROGRAM DESCRIPTION"; 
var parsed = pattern.exec(data); 

console.log(parsed); // (Array) ["07.00 PROGRAM DESCRIPTION", "07.00", "PROGRAM DESCRIPTION"] 

これは柔軟で(場合にフォーマットの変更を適応させるだけのパターンを変更し、そのVARを使用する方が簡単です

+0

さらにコメント:時間の長さが変わり、可変になる場合(例えば、07.00は7:00になりますが、19:00にもなります)できますパターン/([0-9]{1,2}(\.|:)[0-9]{2})\s(.+)/ –

関連する問題