C# 输入字符串格式不正确

C# 输入字符串格式不正确,c#,console,int,C#,Console,Int,我是c#新手,我试图将字符串转换为int。我见过类似的帖子,但没有一篇适合我。我仔细检查以确保要转换的数据类型是字符串,并且该字符串确实包含一个没有空格或其他字符的整数。我别无选择。以下是我的字符串的屏幕截图: 我首先从第一个字符串中提取数字,“11”显示我拥有的最后一个字符串。然后我打印出它的类型,以确保它是一个字符串,但当我使用Convert.ToInt32(驱动程序)时,它不起作用,并且我不断得到输入字符串格式不正确的错误。感谢您的帮助 编辑: 我在下面添加了我正在使用的代码:

我是c#新手,我试图将字符串转换为int。我见过类似的帖子,但没有一篇适合我。我仔细检查以确保要转换的数据类型是字符串,并且该字符串确实包含一个没有空格或其他字符的整数。我别无选择。以下是我的字符串的屏幕截图:

我首先从第一个字符串中提取数字,“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);

根据您稍后添加的代码,我猜您从字符串中提取了一个带双引号的完整“11”,这使它成为字符串而不是数字

所以结果是

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)仍然是一个更好的选择。做你的精选菜

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

您的问题在这里:

int start = s.IndexOf("[[") + 2;
int end = s.IndexOf("]]", start);
您需要从中删除

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

但是,我强烈建议您使用JSON解析器,而不是手动操作。

考虑使用JSON解析器。请不要截图代码……请删除双引号。请向我们展示您的代码这是一个巨大的错误。扔掉所有代码,按照原意使用JSON解析器。“[]”不会产生有效字符串。“[\”“这就是你所看到的for@FabianH.已修复,谢谢。+1为您而设。未完全修复:您正在使用索引+2而不是+3(使其成为
“11
)@法比安。你说得对。我之前就试过了,但没有成功。效果很好。谢谢你的帮助。我会看看JSON解析器是什么。我几天前刚开始用C#编写代码,还是个新手。@Fatima@downvoter,有什么评论吗?