答案 0 :(得分:1)
我注意到你正在做多次转换。您确定它是导致错误的(" 2016")吗? 如果是,则必须有其他人建议的隐藏字符。 a.substring(0,4)确实会删除任何尾随字符。但如果第一个字符是隐藏的字符,则不会。
string output = new string(input.Where(c => char.IsLetter(c) || char.IsDigit(c)).ToArray());
应清除任何可能隐藏的字符。
答案 1 :(得分:1)
也许你可以尝试这样的事情:
int x = Convert.ToInt32(a);
此外,您可以尝试使用.ToString()
的{{1}} Methode使其运行更稳定。
您可以另外尝试使用Rexex清除所有“非数字”字符中的字符串:
a
按如下方式使用以清除:
/// <summary>
/// RegEx to extract all non numeric values.
/// </summary>
private static readonly Regex rxNonDigits = new Regex(@"[^\d.,-]+");
答案 2 :(得分:1)
问题是你的int.Parse(a.Substring 0,4)
字符串变量中必定有一些隐藏字符(可能是回车符?)。请尝试{{1}},因为它们通常位于字符串的末尾。
您还可以清除从中获取该值的输入。
答案 3 :(得分:1)
我认为您正在使用带有JSON的REST API或在查询字符串中传递整个字符串,即JSON formatted string,那么您应该使用
a = new JavaScriptSerializer().Deserialize(a, null).ToString();
x = int.Parse(a);