2017-05-08 40 views
0

我試圖從我的應用程序中的設置中讀出內容。下面是我在遇到麻煩的代碼:從設置中分割字符串

private bool checkGrid() 
{ 
    string playlists = Spotify_Extender.Properties.Settings.Default.Playlists; 

    MessageBox.Show(playlists); 

    string[] split1; 

    if (playlists.Contains(";")) 
    { 
     MessageBox.Show("Multiple Links"); 
     split1 = playlists.Split(';'); 
    } 
    else 
    { 
     MessageBox.Show("One Link"); 
     split1 = new string[1]; 
     split1[0] = playlists; 
    } 

    MessageBox.Show("Array Length: " + split1.Length); 

    int lines = 0; 

    for (int i = 0; i < split1.Length; i++) 
    { 
     MessageBox.Show("Check #" + i + " - " + split1[i] + " - Length: " + split1[i].Length); 
     if (split1[i].Length >= 22) 
     { 
      MessageBox.Show(i + " - " + split1[1]); 
      lines++; 
     } 
    } 

    int rows = this.playlistGrid.Rows.Count; 

    MessageBox.Show(lines + ""); 

    if (rows == lines) 
     return true; 

    return false; 
} 

的代碼應該很容易理解,因爲我知道它應該儘可能的工作,但事實並非如此。我在設置中輸入此:

enter image description here

如果我現在運行這個程序,我的第一個消息框打印出到底是什麼我進入,第二個打印出「一通」和第三打印「數組的長度: 1" 。現在我們到了我遇到麻煩的部分。接下來的消息是這樣的:

enter image description here

使文本的長度是22顯示在MessageBox,但低於這一說法下面是不正確的:

if (split1[i].Length >= 22) 

我真的這個困惑,同時也做到這一點,當我檢查:

if (split1[i] != "") 

任何幫助表示讚賞,因爲我不知道該怎麼辦,因爲我的代碼應該罰款。謝謝你的時間!

+0

你是什麼意思「這種說法是不正確的」?任何錯誤消息,或者只是跳過'if'中的語句?此外,請幫忙檢查一下'MessageBox.Show(i +「 - 」+ split1 [1]);'是否是拼寫錯誤,或者您真的想要打印split1 ['** 1 **']'? – Prisoner

+0

ohh你是對的它應該是split1 [i],謝謝,但這並沒有改變這個事實,即if語句被跳過 –

+1

在你遇到問題的線上放置一個斷點,運行代碼,當你想到該行不符合預期,split1 [i]'的實際值是多少?這應該是你做的第一件事。 –

回答

-1

你應該有split[i]而不是split[1]

+1

這已經在評論中說過了,OP認可了這個錯誤,但它沒有解釋在題。 – Steve