我正在開展一個專案,按流派對滾石雜志的前 500 張專輯進行排序。問題是,我正在嘗試使用 .split() 拆分所有資訊(專輯、樂隊、流派、年份),但有些專輯有多種流派。我正在使用的 .txt 檔案演示多種流派的方式是用引號將它們括起來,例如:album、band、“genre1、genre2”、year。我需要想辦法讓函式跳過流派,讓整個流派部分成為一體。
我并沒有真正嘗試太多,因為我真的不知道該怎么做。如果我先用 " 分隔,它仍然會分裂錯誤。這是一個相冊的例子:
排名、年份、專輯、樂隊、“Genre1、Genre2”、子流派 5、1965、Rubber Soul、The Beatles、“Rock、Pop”、Pop Rock
有一些代碼。它不起作用,但它演示了基本框架。開頭的東西只是檔案閱讀器,因為所有的東西都在一個.txt 檔案中。它從函式 lireInfo() 開始。fichierAlbums 是 .txt 檔案。編輯:我應該讓自己更清楚一點。結果將是一個包含以下內容的陣列:0 是排名,1 是年份,2 是專輯,3 是樂隊,4 是流派。流派,即使有多個,也應該是一個單一的元素。
另外,這是一個學校專案,所以我不能使用 jQuery。
let fichierAlbums = document.getElementById("input-fichier");
function lireFichier()
{
let reader = new FileReader();
// on va chercher le premier fichier et, une fois
// téléchargé, on appelle la fonction lireInfo()
reader.readAsText(fichierAlbums.files[0]);
reader.onload = lireInfo;
}
function lireInfo()
{
// le texte du fichier
let fichierAlbums = this.result;
let lignesAlbums = fichierAlbums.split("\n");
for (let ligneIndex = 0; ligneIndex < lignesAlbums.length; ligneIndex )
{
let ligneAlbumsTrimmed = lignesAlbums[ligneIndex].trim();
console.log(ligneAlbumsTrimmed);
uj5u.com熱心網友回復:
您應該在此處使用 CSV 決議器,并將雙引號設定為轉義字符。也就是說,您可以使用 CSV 技巧決議每一行:
var line = "5,1965,Rubber Soul,The Beatles,\"Rock, Pop\",Pop Rock";
var parts = line.match(/"(.*?)"|[^,] /g)
.map(x => x.replace(/^"|"$/g, ""));
console.log(parts);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533923.html
上一篇:使用正則運算式從字串中提取鍵值對
