C# 从字符串解析int的更好方法
我想看看是否有一种不同/更好的方法来解析我拥有的字符串 字符串为“#def xyz[timer=50,fill=10]”。 我试图从这个字符串中检索计时器和填充值 我目前拥有的代码是:C# 从字符串解析int的更好方法,c#,string,string-parsing,C#,String,String Parsing,我想看看是否有一种不同/更好的方法来解析我拥有的字符串 字符串为“#def xyz[timer=50,fill=10]”。 我试图从这个字符串中检索计时器和填充值 我目前拥有的代码是: string def = "#def xyz[timer=50, fill=10]"; string _timer = def.Remove(def.IndexOf(",")); _timer = _timer.Remove(0, _timer.IndexOf("=", _timer.IndexOf("timer
string def = "#def xyz[timer=50, fill=10]";
string _timer = def.Remove(def.IndexOf(","));
_timer = _timer.Remove(0, _timer.IndexOf("=", _timer.IndexOf("timer")) + 1);
string _fill = def.Remove(def.IndexOf("]"));
_fill = _fill.Remove(0, _fill.IndexOf("=", _fill.IndexOf("fill")) + 1);
int timer = Int32.Parse(_timer);
int fill = Int32.Parse(_fill);
有什么建议吗
提前谢谢 我可能会使用正则表达式。例如:
using System;
using System.Text.RegularExpressions;
class Test
{
static void Main()
{
// You can create the regex once and reuse it, of course. Adjust
// as necessary if the name isn't always "xyz" for example.
Regex regex = new Regex(@"^#def xyz\[timer=(\d+), fill=(\d+)\]$");
string input = "#def xyz[timer=50, fill=10]";
Match match = regex.Match(input);
if (match.Success)
{
int fill = int.Parse(match.Groups[1].Value);
int timer = int.Parse(match.Groups[2].Value);
Console.WriteLine("Fill={0}, timer={1}", fill, timer);
}
}
}
注:
- 这只处理非负整数
- 如果值超出
int
我想说,它比那些
删除调用更清楚地表明了你在做什么,尽管…我喜欢在可能的情况下使用split,它在大多数情况下比regex快得多——我没有测试,但我希望它在这里会更快。当然,这段代码中几乎没有错误检查
Match m = Regex.Match("#def xyz[timer=50, fill=10]", "timer=([0-9]+?), fill=([0-9]+?)[]]");
string timer = m.Result("$1");
string fill = m.Result("$2");
void Main()
{
string def = "#def xyz[timer=50, fill=10]";
string [] inBracket = def.Split("[]".ToCharArray());
string [] elements = inBracket[1].Split(",".ToCharArray());
int timer = int.Parse(elements[0].Split("=".ToCharArray())[1]);
int fill = int.Parse(elements[1].Split("=".ToCharArray())[1]);
Console.WriteLine("timer = "+timer.ToString());
Console.WriteLine("fill = "+fill.ToString());
}
你试过正则表达式吗?更好是什么意思?更容易阅读?性能更好?k0stya,柏拉图不,我还没试过正则表达式。系统故障是指性能更好的设备。def字符串可能会比我的长一点。