C#第一个字母到特殊字符[=]之间的随机字符
本文关键字:之间 随机 字符 第一个 特殊字符 | 更新日期: 2023-09-27 18:26:36
我的问题是从.txt文件中获取值。我有这个例子[没有输入]:
damage=20 big explosion=50 rangeweapon=50.0
我想在"="之后得到这些值。只是用做一个string[]
damage=20
big explosion=50
rangeweapon=50.0
我有一些其他的机制,但我想找到通用机制,把所有的值都输入到string[]
中,然后在开关中检查它。非常感谢。
我试图用regex解决您的问题。我找到了一个不是最佳解决方案的解决方案。也许它可以帮助或指导您找到最佳解决方案。
请像这个一样尝试
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*/
之后,您可以加入这些数组或使用这些数组做任何您想做的事情。
这应该解析您描述的字符串,但请记住,它不是很健壮,也没有错误处理。
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);
}