我的問題是從.txt文件獲取值。 我有這個例如[無輸入]:C#第一個字母到特殊字符之間的隨機字符[=]
damage=20 big explosion=50 rangeweapon=50.0
,我想後「=」,以獲取這些值。只是爲了讓一個string[]
有類似的東西:
damage=20
big explosion=50
rangeweapon=50.0
我得到了一些其他的技工,但我想找到通用機械來獲取所有值到string[]
,然後就檢查它的開關。 謝謝。
我的問題是從.txt文件獲取值。 我有這個例如[無輸入]:C#第一個字母到特殊字符之間的隨機字符[=]
damage=20 big explosion=50 rangeweapon=50.0
,我想後「=」,以獲取這些值。只是爲了讓一個string[]
有類似的東西:
damage=20
big explosion=50
rangeweapon=50.0
我得到了一些其他的技工,但我想找到通用機械來獲取所有值到string[]
,然後就檢查它的開關。 謝謝。
我試圖用正則表達式解決你的問題。我發現一種解決方案並非最佳解決方案。 也許它可以幫助或指導你找到最佳的解決方案。
請嘗試這樣
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*/
之後,你可以加入或你想與這些陣列東西。
這段代碼我理解並且很小。只有我需要刪除我的示例代碼中沒有的其他字符。工作正常。現在我必須找到一種方法來獲得對手槍的傷害,對其他人的傷害...我知道Contains,我會用這個。非常感謝。這對我來說是解決方案。 – Rinepim
PS。你能解釋一下@"(\s*\D+\="
嗎?謝謝。 –
Rinepim
\ s * = 0-n空格,\ D + = 1-n不是數字,\ =是mean =,()= group 您可以在http://www.phpliveregex.com上看到更多信息並測試您的reg /是與另一種編程語言相同的概念。 – cavaliercyber
這應該解析您描述的字符串,但請記住它不是很健壯,並且沒有錯誤處理。
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字典應該有你正在尋找的信息。
我不是專家,但使用Regex怎麼樣?
不是世界上最乾淨的代碼,但會適合您的情況。
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();
你想從文本中讀取數字。你可以用這樣的文本保存你的數據。
傷害= 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);
}
你只是想'字符串[] =值text.Split(」「);' – Jonesopolis
@Jonesy - 因爲不會工作的 「大爆炸」 – EkoostikMartin
權。好的電話 – Jonesopolis