【发布时间】:2017-07-07 15:06:16
【问题描述】:
我正在 C# 中试用服务,因此无法使用 Console.WriteLine(...) 调试值。这就是为什么我不知道最后我的变量号是什么:
public int addAndSoustractNumberFromAString(string ustr)
{
int result = 0;
if(!string.IsNullOrEmpty(str))
{
string str = ustr.Trim();
//Regexes
System.Text.RegularExpressions.Regex valid_regex = new System.Text.RegularExpressions.Regex(@"[\+]\d+|[\-]\d+");
System.Text.RegularExpressions.Regex invalid_regex = new System.Text.RegularExpressions.Regex(@"[a-zA-Z]");
//Handling errors
if (invalid_regex.IsMatch(str) || !valid_regex.IsMatch(str) || !Char.IsDigit(str[str.Length - 1])) return 0;
if (Char.IsDigit(str[0])) str = "+" + str;
//Load all numbers in a string array
List<string> numbers = new List<string>(valid_regex.Split(str).ToArray());
//Cast string numbers to int + result calculation
foreach (string number in numbers) { if (!int.TryParse(number, out int n)) return 99; result += n; }
}
return result;
}
我的代码是什么? 我输入加法和减法,它执行操作并将结果作为整数返回。
示例: 如果我输入 "52-2+3" 它应该返回 53
问题:
我的代码总是返回 99,这意味着解析失败。
以防万一,我尝试了int.TryParse("-2", out int n),它工作正常。
线路不工作:
List<string> numbers = new List<string>(valid_regex.Split(str).ToArray());
我的正则表达式很好,我在regexstorm net 网站上对其进行了测试。
我的问题是,为什么我的字符串没有使用假定的有效正则表达式正确拆分? Regex.Split() 没有做我认为的事情吗? (我认为它会将我的字符串拆分为 +number 或 -number 字符串
旁注:不以符号开头也没关系。如果我的字符串以数字开头,它将在末尾添加“+”以用于正则表达式。
【问题讨论】:
-
为什么要在对
TryParse的调用中声明一个 int ?你不想得到这个值吗?您是否尝试过声明int n;然后int.TryParse(number, out n)? -
是的,它适用于我的其他方法。以防万一我测试了它仍然显示99。可以在函数TryParse中声明它。
-
你不能把这段代码放到控制台应用程序中并在那里调试吗?
-
人们很认真地投票不说话...我在这里发布之前测试了很多东西...:/不,我不能,它使用 ISS,Console.WriteLine(... ) 不起作用。