2017-02-22 35 views
4

我想解析以下字符串節點js,如何解析這樣的字符串?

3693, 「毒魔復仇,本(1985)」,喜劇|恐怖

3693,
「毒魔復仇,The(1985)「,
喜劇|恐怖。

同樣,以下

161944,最後燒磚在美國(2001年),戲劇

應該解釋爲

的美國最後一名磚匠(2001)

戲劇

我不能分裂用逗號做,因爲有內部的逗號「」。

工作的解決方案: LS05建議我使用「substring」,所以我做了它,它的工作完美。 它在這裏。

var pos1 = line.indexOf(','); 
    var line = line.substring(pos1+1); 

    pos1 = line.indexOf(','); 
    pos2 = line.lastIndexOf(','); 

    let movie_id = line.substring(0,pos1); 
    let movie_tag = line.substring(pos1+1,pos2); 
    let movie_timespan = line.substring(pos2+1); 

由於LS05 :)

+0

這是什麼類型的數據? –

+1

也許你可以對第一部分和最後一部分進行子字符串處理,所以標題將保持爲 – LS05

+0

@alim oh ok,我已根據您的示例數據對其發表評論:) – LS05

回答

6

您可以使用正則表達式來分析你的字符串,排除逗號這是引號內

var str = '3693,"Toxic Avenger, The (1985)",Comedy|Horror'; 
console.log(str.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g).join("\n")); 

Demo

至於(如果你想知道如何在上述正則表達式的作品參考學分)代碼去,我嘗試分割你的字符串,忽略字符串內部的逗號,然後我們再次使用新行字符加入數組項目\n

Credits for Regex

+0

這會在行尾刪除','。 'join(「,\ n」)'可能有幫助 – RaR

+0

它有問題。不能分析這個字符串'161944,美國最後的磚匠(2001),戲劇'。如果沒有「」,則刪除字符串。 – arslan

+0

我又增加了一個例子。請你檢查一下吧! – arslan

2

你可以使用一個CSV解析器如papa parse或者如果你覺得不需要第三方庫你可能看看this function