【问题标题】:Split string using delimiter but with exception [duplicate]使用分隔符拆分字符串但有异常[重复]
【发布时间】:2017-10-19 03:37:33
【问题描述】:

我有一个如下所示的文本文件。

AIR NEW ZEALAND LIMITED,AIZ,交通

“AIRXPANDERS, INC.”,AXP,Health Care Equipment & Services

ALARA RESOURCES LIMITED,AUQ,材料

ALCHEMIA LIMITED,ACL,"Pharmaceuticals, Biotechnology & Life Sciences"

ALCHEMY RESOURCES LIMITED,ALY,材料

它有三列,总是用逗号分隔。但也有一些例外,内容本身包含逗号。该文件已将这些放在一对引号中。

如何使用 String.Split 方法方便地读取列并处理这些异常?

干杯 吉

【问题讨论】:

  • 字符串在引号上拆分然后在逗号上拆分?
  • 请贴出你目前开发的代码。
  • string[] cols = row.Split(','); //显然这是行不通的
  • @JohnWu,感谢您的指出。虽然我不知道 Regex 公式是如何工作的,但它确实有效!

标签: c# string


【解决方案1】:

使用regular expressionMatches 函数提取匹配项,而不是拆分字符串。

例如:

var input = @"Column1,Column2,""Column,4"",Column4";
var expression = @"""[^""]*""|[^,]+";
var results = Regex.Matches(input, expression);
foreach (var s in results)
{
    Console.WriteLine(s);
}

输出:

Column1
Column2
"Column,4"
Column4

【讨论】:

    【解决方案2】:

    这看起来像 CSV 格式。 Import-Csv 应该可以解决问题:

    $data = Import-Csv -Path your-data.txt -Delimiter ","
    

    Import-Csv 假定第一行包含列标题。如果不是,您可以使用-Header 开关定义标题名称(即-Header:"col1","col2","col3")。

    【讨论】:

      猜你喜欢
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      相关资源
      最近更新 更多