需要拆分我的制表符分隔文件 C# 的数据
本文关键字:文件 数据 分隔 制表符 拆分 我的 | 更新日期: 2023-09-27 18:35:36
我需要将文本文件(制表符分隔)拆分为列并在SQL Server中加载。问题是文件中的数据与列中存在空格的方式不同,如下所示:
Name(Single Space)Sex(Multiple Spaces)Designation(Single Space)Salary(Multiple Spaces)
我使用以下代码来拆分文件,但它不是根据我的需要。
for (int index = 2; index < allLines.Length; index++)
{
// split up the data line into its parts, using "|" as separator
//string[] items = allLines[index].Split(new char[] { ''t' });
string[] items = allLines[index].Split(new[] { ''t', ''n' });
cmd.Parameters["@Name"].Value = items[0];
cmd.Parameters["@GENDER"].Value = items[1];
cmd.Parameters["@CITY"].Value = items[2];
cmd.ExecuteNonQuery();
}
Split 有一个重载方法可以处理这些空条目。
string[] items = allLines[index].Split(new[] { ''t', ''n' }, StringSplitOptions.RemoveEmptyEntries);
如果.Split
工作正常,但添加到查询中的值具有额外的空格,则可以使用 String.Trim 方法删除任何多余的空格。我会按如下方式使用它:
cmd.Parameters["@Name"].Value = items[0].Trim();
cmd.Parameters["@GENDER"].Value = items[1].Trim();
cmd.Parameters["@CITY"].Value = items[2].Trim();
您可以使用正则表达式来匹配单词(连续的字符序列),这样您就可以完全避免拆分。
尝试以下操作
var items = Regex.Matches(allLines,@"'w+").OfType<Match>().Select(mt => mt.Value);
在此处查看演示
您可以使用正则表达式替换来对数据中的双制表符进行重复数据删除
string data = Regex.Replace(input, "''t+", "'t");
't+
将匹配一个或多个选项卡的任何匹配项,并将其替换为单个选项卡。