输入字符串格式不正确

时间:2018-01-05 15:16:39

标签: c# console int

我是c#的新手,我试图将字符串转换为int。我看过类似的帖子,但没有一个能为我效劳。我仔细检查以确保我想要转换的数据类型是一个字符串,并且字符串确实包含一个没有空格或其他字符的整数。我失去了选择。这是我的字符串的屏幕截图: enter image description here

我首先从第一个字符串和" 11"中提取了数字。显示我的最终字符串。然后我打印出它的类型以确保它是一个字符串,但是当我使用Convert.ToInt32(驱动程序)它不起作用,我不断得到输入字符串不正确的格式错误。任何帮助表示赞赏。

编辑:

我在下面添加了我正在使用的代码:

    Console.WriteLine("Result: {0}", result);
    string s = result;
    int start = s.IndexOf("[[") + 2;
    int end = s.IndexOf("]]", start);
    string drivers = s.Substring(start, end - start);
    Console.WriteLine(drivers);
    Console.WriteLine(drivers.GetType());
    int t= Convert.ToInt32(drivers);

2 个答案:

答案 0 :(得分:2)

你的问题在这里:

int start = s.IndexOf("[[") + 2;
int end = s.IndexOf("]]", start);

您需要从那里删除"

int start = s.IndexOf("[[\"") + 3;
int end = s.IndexOf("\"]]", start);

但是,我强烈建议您使用JSON解析器而不是本手册。

答案 1 :(得分:0)

根据你后来添加的代码,我猜你是从字符串中取出一个整体" 11"使用双引号,这使它成为STRING而不是数字。

结果是

Convert.ToInt32(""11""); //-> Fires Error.

解决方案:

 int start = s.IndexOf("[[\"") + 3;
int end = s.IndexOf("\"]]", start);
string drivers = s.Substring(start, end - start);

试试这个。它将返回11而不是" 11"。

他们给你使用JSON解析器的所有建议(例如Json.NET)仍然是一个更好的选择。做你的选择。

如果有帮助,请标记为答案。