【问题标题】:checking fields in csv for a number检查 csv 中的字段以获取数字
【发布时间】:2014-12-03 06:50:42
【问题描述】:

当我在 csv 文件中看到错误条目时,我试图停止我的进程挂起,这通常是“#N/A”,其中应该有一个双精度(我知道它在读入时是一个字符串...... )

但这不起作用,为什么?

String ColumnString = (values[Column]);
String NA = "#N/A";
if (ColumnString==NA);
{
     Console.WriteLine(values[Column]);
     Console.WriteLine("non numeric value detected, Skipping line #{0}", LineNumber);
     break;
}

【问题讨论】:

  • 改为使用 Linq,,,
  • 如何发布对编码的更改?评论中没有 {code} 选项,
  • 究竟是什么不起作用? values的类型是什么?
  • 你需要知道 ColumnString 在列表中有一个数字字符吗?
  • 值{[column] 应该持有一个双精度值进行处理,但硬件问题有时会导致 #N/A 被输入到 csv 文件中,我必须抓住这一点并忽略该行或文件,直到我到达 .csv 数据集的末尾,对不起,我应该更清楚,,,,当我测试它时它总是会捕获它,即使它不是#N/A

标签: c# string csv


【解决方案1】:

如果你确定 ColumnString 的类型是字符串,你可以检查它的至少一个数字字符,如下面的 linq 查询

bool hasnumeric = ColumnString.Any(t => char.IsNumber(t));
if(hasnumeric== true)
{
//colomnString has at least one numeric character
}else{
//colomnString doesn't have any numeric characters
}

【讨论】:

  • 这是否适用于字符串,但我的 csv 文件中有字符串。
  • 是的,上面的 linq 查询适用于任何字符串,您可以将 csv 文件中的全部数据提取到字符串变量中,然后使用此查询检查变量
  • 你想在整个 csv 中搜索一个特殊的字符串值吗?喜欢这个“#N/A”吗?
【解决方案2】:
string ColumnString = (values[Column]);
string NA = "#N/A";
if (string.Compare(ColumnString,NA)==0)
{ 
 Console.WriteLine(values[Column]);
 Console.WriteLine("non numeric value detected, Skipping line #{0}", LineNumber);
 break;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多