【问题标题】:Replace comma with semicolon in between quotas在配额之间用分号替换逗号
【发布时间】:2012-01-18 23:48:32
【问题描述】:

我有一个 csv 文件,我从中获取数据到一个表中。 例子: "ABC",1,"苹果" 要求是字符串将在配额“”内,整数将不带引号。 上面的行将分成三列。 我正在使用流阅读器类使用 line.split(',') 将行拆分为列。它工作正常不幸的是我在一个文件中有一个记录,在这些字符串引号之间有一个逗号 “ABC,DEF,ghi”,2,“橙色”。 因此,现在它们不再是 3 列,而是充当 5 列,并且所有转换都失败了。 任何人都可以帮助我用 C# 编写脚本,它将配额之间的逗号替换为分号,并且不要触摸列之间的逗号。

谢谢。

【问题讨论】:

  • 你如何在这些字符串中转义",或者你能期望它们不包含"
  • 文件是否会发生变化,您可能需要创建一个定义文件标题布局的枚举。并检查我在上一个项目中完成的额外列,否则您将不得不在进行拆分后检查每个字符串的长度,因为 ABC、DEF、ghi" 应该分成 3 列而不是 1 列,你能按照我所说的去做吗.. 那么你必须将 DEF ghi 作为 ABC 的一部分

标签: c# vb.net ssis


【解决方案1】:

看起来您的 CSV 可能符合 RFC 4180。使用 RFC 4180 解析器。其中许多存在。检查这个:http://www.codeproject.com/KB/database/CsvReader.aspx

【讨论】:

  • 我没有使用任何解析器我在 ssis 的脚本组件中使用 C# 自定义脚本
  • 如果你使用 C#,为什么会有一个 VB 标签
【解决方案2】:

这个问题在这里得到解答: Java: splitting a comma-separated string but ignoring commas in quotes

您可以使用相同的正则表达式",(?=([^\"]*\"[^\"]*\")*[^\"]*$)" 并使用 C# 方法Regex.Split()

【讨论】:

  • 嗨,我没有 Regex 类,我需要使用该 using 语句来让我成为 C# 的初学者,请与我联系
  • 你确实有一个正则表达式类。您需要添加using System.Text.RegularExpressions
猜你喜欢
  • 1970-01-01
  • 2014-10-31
  • 2022-12-30
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多