2017-07-28 236 views
1

背景分割線與兩個分隔符

我設計的應用程序,將在初始設置帶來的應用程序使用。的設置是通過一個文本文件導入並都是具有以下格式:

Color= Blue 
Size= 5 
Value = 100 

每一行是一個創建的對象設置(字符串,字符串b)使用的「=」與Line.Split分隔符()。然後將每個創建的對象添加到List(設置)_settingsList。

問題

有在文本文件中的最後2個設置,在格式

Location = 123 This Street, City, State, Zip Code 

在這種情況下,我想通過拆分它既有「=」和「,」並用它來創建一個對象位置(字符串名稱,字符串地址,字符串城市,字符串狀態,字符串zip)。最後,這將被添加到List _locList。

當前代碼

StreamReader reader = new StreamReader(openFileDialog1.FileName); 
string line; 

while ((line = reader.ReadLine()) != null) 
{ 
    string[] words = line.Split('='); 
    if(words[0].ToLower().Trim() == "Location") 
    { 
     string keepThis = words[0].ToLower().Trim(); 
     string[] Words = line.Split('='); //how to split by 2 delimiters? 
     _locList.Add(new Location(Words[0], Words[1], Words[2], words[3], Words[4]); 
    } 
    _settingsList.Add(new Setting(words[0], words[1])); 
} 

字符串KEEPTHIS是存在的,因爲我試圖從線,使用刪除整個「位置=」一部分「」作爲分隔符,則只需添加它作爲新的位置(保留這個,單詞[0],單詞[1],單詞[2],單詞[3])

任何建議,以幫助解決這個將非常感激!

+1

'Split()'可以在參數中調用字符串數組:'mystring.Split(new string [] {「=」,「,」};' – KamikyIT

回答

1
string[] words = line.Split('=', ','); 

使用它,你應該很好。你真的很親密。實際上,您可以根據需要添加儘可能多的參數,以便.split()包含儘可能多的轉義字符。只是一個提示,如果你曾經使用3個或更多的轉義字符,我建議先製作一個數組,然後將該數組作爲參數傳遞。保持乾淨!

希望能幫助萌芽!

+0

哇,不敢相信我從來不知道你可以快速簡單 – Yahtzee

+0

是的,如果你使用Microsft Visual Studio,你可以將鼠標懸停在這些方法上,文本彈出框會顯示更多關於它們的信息,對我來說,懸停'.Split()'告訴我把這個作爲參數傳遞給參數「char [] separator」,所以我只知道從函數盤旋到傳遞給它的東西! –

+0

@Yahtzee另外,如果你不介意把這個標記爲回答讓其他人知道這個只要點擊投票按鈕下方的箭頭即可將其標記爲答案 –

1
string[] Words = line.Split('='); 

應該可能是:

string[] Words = words[1].Split(','); 

既然你已經分割線,第二項(1指數)擁有一切的=的右側。

+0

這個解決方案也起作用,但是公平性很差,並且發佈了第一個答案。不過謝謝 – Yahtzee