【问题标题】:How to fix extra white-space issue in C# code?如何修复 C# 代码中的额外空白问题?
【发布时间】:2019-09-12 22:18:37
【问题描述】:

当我在数字之间使用额外空格时,从 .txt 文件中获取数字时出现错误。示例:56(空格)(空格)(空格)45(空格)(空格)6(空格)(空格)(空格)(空格)(空格)2 789

当我在数字之间使用 1 个空格时没有问题。示例:56 45 6 2 789

for (int i = 0; i < count; i++)
{
    string[] temp2;
    temp2 = ReadText[i].Split(' ');
    for (int a = 0; a < temp2.Length; a++)
    {
        Value[ValueCount] = float.Parse(temp2[a]);
        ValueCount++;
    }
}

我希望正常工作,但有问题,我不明白。

【问题讨论】:

  • 您需要使用StringSplitOptions.RemoveEmptyEntries,否则您将在结果数组中获得空白条目。
  • 查看string.Split的第二个参数。此外,如果您使用调试器并查看 Split 调用的结果,您可能会看到您的问题。我强烈建议您使用float.TryParse 而不是float.Parse。最后,请附上您看到的错误(或更可能是异常)及其生成位置。
  • 感谢所有帮助,已找到答案。

标签: c# parsing


【解决方案1】:

你可以使用TryParse来帮助你

for (int i = 0; i < count; i++)
{
    string[] temp2;
    temp2 = ReadText[i].Split(' ');
    for (int a = 0; a < temp2.Length; a++)
        if (float.TryParse(temp2[a], out Value[ValueCount]))
            ValueCount++;
}

你也可以试试StringSplitOptions

for (int i = 0; i < count; i++)
{
    string[] temp2;
    temp2 = ReadText[i].Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
    for (int a = 0; a < temp2.Length; a++)
        Value[a] = float.Parse(temp2[a]);
}

【讨论】:

  • TryParse 如何去除多余的空格?
  • @Berkan 这应该与其他建议结合使用。
  • @nyssapongjaerdenlarp:对于拆分调用的虚假返回值,TryParse 调用将返回 false。它导致糟糕的日子被忽视。正确的答案是使用 SplitOptions 规范(去除虚假数据)和 TryParse,因为它是来自外部的数据,并且有时可能会被错误地格式化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 2019-12-24
  • 2011-02-05
相关资源
最近更新 更多