【问题标题】:using regex to parse a file from a ftpwebrequest使用正则表达式从 ftpwebrequest 解析文件
【发布时间】:2012-06-26 19:37:39
【问题描述】:

我正在通过 c# 中的 ftpwebrequest 从供应商处读取数据。因此,数据将逐行采用字符串格式,例如

0123030014030300123003120312030203013003104234923942348

我需要将这些数据解析到适当的字段中,然后我可以将它们插入到 sql 表中。我知道每个字段的起始位置,所以我想使用正则表达式来解析每个字段。这是我用来获取数据的函数,现在我只需要解析数据。我很难找到一个明确的解决方案。任何建议将不胜感激:)

    static void GetData()
    {
        WebClient request = new WebClient();
        string url = "ftp://ftp.WebSite.com/file";
        request.Credentials = new NetworkCredential("userid", "password");
        try
        {
            byte[] newFileData = request.DownloadData(url);
            string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
            Console.WriteLine(fileString);
        }
        catch (WebException e)
        {

        } 
    }

【问题讨论】:

  • 好吧,不太清楚为什么要为此使用正则表达式。我会使用 Substring 我自己。
  • 数据进入表格的模式是什么?
  • 整个东西都在一个字符串中,所以找出一个新行的分隔符并对字符串进行拆分,然后你将有一个字符串数组,然后你可以使用拉出数据subscting 因为你知道每一位数据的开始。
  • @CrazyDart - 同意,现在这确实最有意义,我从未使用过正则表达式,也不确定是否有办法这样做。谢谢!

标签: c# regex ftp ftpwebrequest


【解决方案1】:

如果您只是按指定长度进行拆分,则不需要使用正则表达式。在 C# 中你可以只使用String.Substring,例如:

byte[] newFileData = request.DownloadData(url);
string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
string fieldOne = fileString.Substring(0, n);

【讨论】:

    【解决方案2】:

    这是一个正则表达式的例子。我们通过 \d{x} 的总数来指定要捕获的内容,例如 \d{4} 给我们 4 位数。然后我们将它放入一个命名的捕获组(?<NameHere>\d{4}),然后我们通过它的名称(前面文本示例中的NameHere)访问它以进行处理。

    查看删除三个字段 ID、组号和目标编号的示例:

    string data = "0123030014030300123003120312030203013003104234923942348";
    
    string pattern = @"^(?<ID>\d{4})(?<Group>\d{3})(?<Target>\d{8})";
    
    Match mt = Regex.Match(data, pattern);
    
    // Writes
    // ID: 0123 of Group 030 on Target: 01403030
    Console.WriteLine("ID: {0} of Group {1} on Target: {2}", mt.Groups["ID"].Value, mt.Groups["Group"].Value, mt.Groups["Target"].Value);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多