我必须解析一个字符串。它包含一个或两个数字。
它可以有3个来自。
数字可能是负数。
例如:
现在更难的部分:
-100--200表示:number1 = -100,number2 = -200
-100-200-表示:抛出新的FormatException()。它不是有效的字符串。
任何无法解析为2 ints的东西都会抛出一个formatexception(int.Parse执行此操作,因此可以依赖它)。
我需要一个解析器来解析它到两个int? -s(可以为空的整数)。
每个字符串都有效(有意义)或无效(没有意义)。没有字符串可以表示两件事(至少我找不到一件)。
如果我得到2值,我希望它以元组的形式返回。
我纠结于ifs。
答案 0 :(得分:8)
(编辑以从评论添加更新的正则表达式)
看起来您可以使用Regex类来解决这个问题,因为您的语法是相当规则的并且结构:
var regex = new Regex(@"^(?<first>-?[\d.,]+)?-(?<second>-?[\d.,]+)?$");
var match = regex.Match(input);
if (match.Success)
{
int? a = match.Groups["first"].Success
? Int32.Parse(match.Groups["first"].Value)
: (int?)null;
int? b = match.Groups["second"].Success
? Int32.Parse(match.Groups["second"].Value)
: (int?)null;
}
答案 1 :(得分:6)
您是否考虑使用正则表达式?
^(-?\d+)?-(-?\d+)?$
答案 2 :(得分:-2)
你可以试试.Split()方法:
string testString = "100-200" ;
string[] results = testString.Split('-');
int nr1;
int nr2;
try
{
nr1 = Convert.toInt32(results[0]);
nr2 = Convert.toInt32(results[1]);
}
catch{}