2013-08-06 115 views
0

我的問題是從.txt文件獲取值。 我有這個例如[無輸入]:C#第一個字母到特殊字符之間的隨機字符[=]

damage=20 big explosion=50 rangeweapon=50.0 

,我想後「=」,以獲取這些值。只是爲了讓一個string[]有類似的東西:

damage=20 
big explosion=50 
rangeweapon=50.0 

我得到了一些其他的技工,但我想找到通用機械來獲取所有值到string[],然後就檢查它的開關。 謝謝。

+0

你只是想'字符串[] =值text.Split(」「);' – Jonesopolis

+1

@Jonesy - 因爲不會工作的 「大爆炸」 – EkoostikMartin

+0

權。好的電話 – Jonesopolis

回答

0

我試圖用正則表達式解決你的問題。我發現一種解決方案並非最佳解決方案。 也許它可以幫助或指導你找到最佳的解決方案。

請嘗試這樣

string operation = "damage=20 big explosion=50 rangeweapon=50.0"; 

string[] wordText = Regex.Split(operation, @"(\=\d+\.?\d?)"); 
/*for split word but result array has last value that empty you will delete its*/ 

string[] wordValue = Regex.Split(operation, @"(\s*\D+\=)"); /*for split digit that is value of word but result array has first value that empty you will delete its*/ 

之後,你可以加入或你想與這些陣列東西。

+0

這段代碼我理解並且很小。只有我需要刪除我的示例代碼中沒有的其他字符。工作正常。現在我必須找到一種方法來獲得對手槍的傷害,對其他人的傷害...我知道Contains,我會用這個。非常感謝。這對我來說是解決方案。 – Rinepim

+0

PS。你能解釋一下@"(\s*\D+\="嗎?謝謝。 – Rinepim

+0

\ s * = 0-n空格,\ D + = 1-n不是數字,\ =是mean =,()= group 您可以在http://www.phpliveregex.com上看到更多信息並測試您的reg /是與另一種編程語言相同的概念。 – cavaliercyber

0

這應該解析您描述的字符串,但請記住它不是很健壯,並且沒有錯誤處理。

string stringToParse = "damage=20 big explosion=50 rangeweapon=50.0"; 
string[] values = stringToParse.Split(' '); 
Dictionary<string, double> parsedValues = new Dictionary<string, double>(); 

string temp = ""; 
foreach (var value in values) 
{ 
    if (value.Contains('=')) 
    { 
     string[] keyValue = value.Split('='); 
     parsedValues.Add(temp + keyValue[0], Double.Parse(keyValue[1])); 
     temp = string.Empty; 
    } 
    else 
    { 
     temp += value + ' '; 
    } 
} 

在此之後,parsedValues字典應該有你正在尋找的信息。

+0

經過測試,代碼很好,但我必須改變這個值。我必須瞭解Dictonary,因爲我不知道這是幹什麼的。( – Rinepim

+0

即使您是C#的新手,也知道如何使用它是一件值得的事。滾動到此鏈接的「示例」部分可能會一個很好的開始。http://msdn.microsoft.com/en-us/library/xfhwa508。aspx – Scampbell

+0

我會嘗試學習,但是關於你的代碼 - 不像來自「cavaliercyber」的代碼那樣工作得很好,但是謝謝你的支持:) – Rinepim

0

不是世界上最乾淨的代碼,但會適合您的情況。

 string input = "damage=20 big explosion=50 rangeweapon=50.0"; 
     string[] parts = input.Split('='); 
     Dictionary<string, double> dict = new Dictionary<string, double>(); 

     for (int i = 0; i < (parts.Length - 1); i++) 
     { 
      string key = i==0?parts[i]:parts[i].Substring(parts[i].IndexOf(' ')); 
      string value = i==parts.Length-2?parts[i+1]:parts[i + 1].Substring(0, parts[i + 1].IndexOf(' ')); 
      dict.Add(key.Trim(), Double.Parse(value)); 
     } 

     foreach (var el in dict) 
     { 
      Console.WriteLine("Key {0} contains value {1}", el.Key, el.Value); 
     } 

     Console.ReadLine(); 
0

你想從文本中讀取數字。你可以用這樣的文本保存你的數據。

傷害= 20,大爆炸= 50,範圍武器= 50。並通過File.ReadAllLines()從文本中讀取。

string[] Lines; 
    string[] myArray; 
    Lines = File.ReadAllLines(your file path); 



     for (int i = 0; i < Lines.Length; i++) 
     { 
        myArray = Lines[i].Split(','); 

     } 
     for (int j = 0; j < myArray .Length; j++) 
     { 
         string x =myArray [j].ToString(); 
         x = Regex.Replace(x, "[^0-9.]", ""); 

         Console.WriteLine(x); 
     } 
相關問題