2011-07-01 65 views
0

我有這樣的文本格式:如何在另一個文本中獲取子字符串?

name: 
last name: 
birthday: 
years old: 
parent: 
school: 

,我有下一個信息..

name:name1 
last name:lastname1 
birthday:13/03/1991 
years old:20 
parent:fatherx 
school:university x 

如何獲得:

name1 
lastname1 
13/03/1991 
20 
fatherx 
university x 

...不同的變量? 不要忘記用戶有時他們沒有例如一個信息,他們對結腸有空

parent: 
+0

@Ed:有一個問題存在,它剛剛吸進代碼段。 – Yuck

+0

這是在他的「代碼」 –

+0

信息是在一個字符串變量? – Jethro

回答

2

Split。例如,如果您將每行都存儲在單獨的字符串中,則可以執行以下操作。

string s = "name:angel rodrigo"; 
string name= s.Split(':')[1]; // Get everything after the colon 
+0

什麼意思[1]?有時用戶不寫日期,例如他們沒有大學它是否工作? – angel

+0

'1'會在你指定的字符之後(在你給出的例子中)得到所有的東西。 –

+0

它表示第一個':'和第二個':'之間的所有東西,如果有第二個'''。如果沒有第二個':'它會在第一個':'後面的所有內容到字符串結尾。閱讀更多在[msdn](http://msdn.microsoft.com/en-us/library/b873y76a.aspx) –

1

您可以使用下面的代碼來創建鍵值對的字典。

 List<string> fields = new List<string> 
    { 
     "name:", 
     "last name:", 
     "birthday:", 
     "years old:", 
     "parent:", 
     "school:", 
    }; 
    string rawData = 
     @"name:angel rodrigo 
last name:uc ku 
birthday:13/03/1991 
years old:20 
parent:fernando uc puc 
school:university x"; 

    var data = 
     fields.ToDictionary(
      field => field.TrimEnd (':'), 
      field => Regex.Match(rawData, "(?<=" + Regex.Escape(field) + ").*")); 
    foreach (var kvp in data) 
    { 
     Console.WriteLine(kvp.Key + " => " + kvp.Value); 
    } 

產生以下結果:

name => angel rodrigo 
last name => uc ku 
birthday => 13/03/1991 
years old => 20 
parent => fernando uc puc 
school => university x 
相關問題