我在C#中嘗試使用服務,因此無法使用Console.WriteLine(...)調試值。這就是爲什麼我不知道什麼是我的變量數結尾:C#Regex.Split()不能按預期工作
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()沒有做我相信它做的事嗎? (我想它會將我的字符串拆分爲+數字或 - 數字字符串
附註:如果不以符號開頭就可以瞭如果我的字符串以數字開頭,它會在末尾添加「+」正則表達式的目的。
爲什麼你要在'TryParse'的調用中聲明一個int?你不想得到這個價值嗎?你嘗試過聲明'int n;'然後'int.TryParse(number,out n)'? – Rafalon
是的,它適用於我的其他方法。以防萬一我測試過,它仍然顯示99.可以在函數TryParse中聲明它。 –
難道你不能將這段代碼放到控制檯應用程序中並在那裏調試嗎? –