2014-01-23 46 views
0

我在網上搜索了一種方法來做到這一點,到目前爲止我只遇到了不符合標準的例子尋找...在javascript中用兩個不同短語分隔的大字符串中提取字符串

我想提取之間出現「收到:」字符串和「發送的信息」

通常情況下,字符串將顯示爲:

2014-01- 23 13:26:13 - 吉姆超人收到: [email protected]

請唧唧歪歪的,我們需要一個新的超級英雄在管理者測試BLA BLA的複雜

supermanager [娃娃]

傳輸的信息

+3

您如何嘗試將您遇到的示例與您嘗試執行的操作相匹配? – Jerry

+1

'.split(start).pop().split(end)[0]' – elclanrs

+0

^^^^我喜歡它! – adeneo

回答

1

聽起來像一個簡單的字符串:

var str = ...; // Where ever it came from 

str = str.substring(
     str.indexOf("received from:") + "received from:".length, 
     str.lastIndexOf("The information transmitted")); 

console.log(str); // Check the results 

請注意如何將長度添加到「收到:」。這是因爲「從...接收到」的文本將不會包含在您的輸出中。

+0

我很感謝你的回答,這就是我一直在尋找的。我對JavaScript並不熟悉,而且這種方法有效。 –

+0

如果同一文本重複多次,該怎麼辦?有沒有辦法阻止它被添加到str變量? –

+0

這是一個稍微不同的問題。如果你有很多需要解析的消息,你首先需要理解如何在使用我給出的解析答案之前將它們分開。你需要發佈一個例子,以便找到普通的分頻器。 (可能是一個不同的問題。) – 64BitBob

0

,你可以做這樣的:

var text = "..."; 
var fromText = "received from:"; 
var endText = "The information transmitted"; 
var extractedText = text.substring(text.indexOf(fromText) + fromText.length, 
        text.indexOf(endText)); 

,你也可以這樣做:

var extractedText = /\breceived from:(.*?)\bThe information transmitted\b/.exec(text)[1]; 
1

怎麼樣一個正則表達式?

str = "2014-01-23 13:26:13 - Jim Superman received from: [email protected]" 
/(?: received from: (.*?) The information transmitted)/.exec(str)[1] 
相關問題