【问题标题】:Input string not in a correct format [closed]输入字符串格式不正确[关闭]
【发布时间】:2018-01-05 15:16:39
【问题描述】:

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

我首先从第一个字符串中提取了数字,“11”显示了我拥有的最后一个字符串。然后我打印出它的类型以确保它是一个字符串,但是当我使用 Convert.ToInt32(drivers) 它不起作用并且我不断收到输入字符串格式不正确的错误。任何帮助表示赞赏。

编辑:

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

    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);

【问题讨论】:

  • 考虑使用 JSON 解析器。
  • 请不要截图代码....
  • 去掉双引号。
  • 请向我们展示您的代码
  • 这是一个巨大的错误。扔掉你所有的代码,使用 JSON 解析器。

标签: c# console int


【解决方案1】:

你的问题在这里:

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

您需要从那里删除"

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

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

【讨论】:

  • 效果很好。谢谢您的帮助。我将看到 JSON 解析器是什么。几天前,我刚开始用 C# 编码作为新手。
  • @downvoter,想发表评论吗?
【解决方案2】:

根据您稍后添加的代码,我猜您是从字符串中取出带有双引号的整个“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)的所有建议仍然是更好的选择。做你的选择。

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

【讨论】:

  • "[["" 不会产生有效的字符串。"[[\"" 是您要查找的内容
  • @FabianH。修好了,谢谢。为你 +1
  • 未完全修复:您使用的是 Index + 2 而不是 + 3(使其成为 "11
  • @FabianH。你说的对。我在自己之前尝试过,但没有成功。
猜你喜欢
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多