2017-04-27 106 views
1

我是新來的C#和這個問題可能聽起來愚蠢...... 我正在編程一個播放音樂的機器人,當我發送一個命令時,我想創建某種循環來替換「if」但我不知道怎樣還是怎樣類型的循環......替換如果與循環

這是我的void函數讀取從特定的.txt文件內容並播放歌曲順序:https://pastebin.com/sPG1VtnN

出於測試目的,我做了一個.txt文件在第一行寫上「MTJ Dream」:

songlist "Break The Walls" "Fools Gold" "Out Of My League" "The Walker" 

.txt文件的名稱與特定路徑上的文件夾相同,該程序將讀取雙引號內的所有內容,按順序播放該歌曲,並向我顯示該代碼上包含所有字符串的列表。 這是需要我的這部分代碼的字符串列表進行更換:

pONE: Content/config/teste/ 
pTWO: Content/config/teste/MTJ Dream.txt 
line: songlist "Break The Walls" "Fools Gold" "Out Of My League" "The Walker" 
binder1: "Break The Walls" "Fools Gold" "Out Of My League" "The Walker" 
output1: Break The Walls 
binder2: "Fools Gold" "Out Of My League" "The Walker" 
output2: Fools Gold 
binder3: "Out Of My League" "The Walker" 
output3: Out Of My League 
binder4: "The Walker" 
output4: The Walker 

我考慮寫一個foreach循環,但我sayd ...我是新來的C#和我不知道如何做這種情況下的foreach ...

如果這個問題是重複的,請考慮給我發送的問題,你認爲可以解決我的問題!

+0

你可能需要的是一個Dictionary 而不是一個循環。您正在使用字符串來查找另一個字符串。 – wllmsaccnt

+0

我現在要做一個關於「Dictionary 」的研究,我會看看我是否可以用相同的結果重新編寫代碼,而如果語句少一些,謝謝^^ – Katt

回答

4

這是您需要遵循的模式。請注意,我沒有測試這個代碼,可能有錯誤。這只是爲了展示大致如何去做我認爲你所要求的事情。

public static void Songlist(string fn) 
{ 
    filename = fn; 
    foldername = filename + '/'; 
    pTWO = pONE + filename + ".txt"; 

    using (var reader = new System.IO.StreamReader(pTWO)) 
    { 
     while (!reader.EndOfStream) 
     { 
      var line = reader.ReadLine(); 

      if (line.StartsWith("songlist ")) 
      { 
       var outputs = new List<string>(); 

       // compile all the outputs 
       var position = 9; 
       while (position <= line.Length) 
       { 
        string lister = line.Remove(0, position); 
        string output = lister.Split('"', '"')[1]; 
        outputs.Add(output); 
        position += (2 + output.Length + 1); 
       } 

       // iterate over all the outputs 
       foreach (var output in outputs) 
       { 
        if (Directory.Exists("Content/musics/" + foldername) && output != null && File.Exists("Content/musics/" + foldername + output + ".mp3")) 
        { 
         media.controls.stop(); 
         media.URL = "Content/musics/" + foldername + output + ".mp3"; 
         media.controls.play(); 

         Console.WriteLine("media.controls.currentPosition :: " + media.controls.currentPosition); 
         Console.WriteLine("media.currentMedia.duration :: " + media.currentMedia.duration); 

         Thread.Sleep(TimeSpan.FromSeconds(3)); 
        } 
       } 
      } 
     } 

     reader.Close(); 
    } 
} 
+1

感謝您的快速回答,您的代碼是真的是我在找什麼,謝謝! ^^ – Katt