C# 拆分字符串并验证每个部分

C# 拆分字符串并验证每个部分,c#,winforms,split,C#,Winforms,Split,我有一个包含管道分隔格式内容的文件。这是在WinForm应用程序的C#中实现的 完美格式示例: 1000|2014|01|AP|1|00000001|00 第一个值应始终为4长度 第二个值-4个长度 第三个值-2个长度 第四个值-2个长度 第5个值-1个长度 第6个值-8个长度 第7个值-2个长度 接收到的典型格式示例: 1000|2014|1|AP|1|1 请注意,典型格式不包括第7个值。在这些情况下,它应该默认为“00”。其他字段也没有用前导零填充。这是我的方法 //string b

我有一个包含管道分隔格式内容的文件。这是在WinForm应用程序的C#中实现的

完美格式示例:

1000|2014|01|AP|1|00000001|00
  • 第一个值应始终为4长度
  • 第二个值-4个长度
  • 第三个值-2个长度
  • 第四个值-2个长度
  • 第5个值-1个长度
  • 第6个值-8个长度
  • 第7个值-2个长度
接收到的典型格式示例:

1000|2014|1|AP|1|1
请注意,典型格式不包括第7个值。在这些情况下,它应该默认为“00”。其他字段也没有用前导零填充。这是我的方法

//string buildcontentfromfile = the contents of each file that I receive and read
char[] delimiter = new char[] {'|'};
string[] contents = buildcontentfromfile.Split(delimiter);

if(contents[0].Length == 4)
{
   if(contents[1].Length == 4)
   {
      if(contents[2].Length == 2)
      {
         if(contents[3].Length == 2)
         {
            if(contents[4].Length == 1)
            {
               if(contents[5].Length == 8)
               {
                  if(contents[6].Length == 2)
                  {
                  }
               }
            }
         }
      }
   }
}

这将考虑“完美格式”,当然,我需要添加更多的逻辑来处理如何接收它们的“典型格式”,例如检查第7个值,并将前导0添加到需要它们的字段中,以及长度。但我的方法对吗?是否有更简单的流程来完成此操作?谢谢

使用正则表达式:

var re = new Regex("\d{4}\|\d{4}\|\d\d\|\w\w\|\d\|\d{8}\|\d\d");
var valid = re.IsMatch(input);

使用正则表达式:

var re = new Regex("\d{4}\|\d{4}\|\d\d\|\w\w\|\d\|\d{8}\|\d\d");
var valid = re.IsMatch(input);

就在我的头顶上(我还没有在真正的机器上尝试过)


就在我的头顶上(我还没有在真正的机器上尝试过)


是否使用子字符串?我将研究如何使用正则表达式。他们非常擅长评估字符串部分的字符类型和长度。很抱歉响应太晚,但感谢您的输入。我想我明天会试试正则表达式。也许用子字符串吧?我会看看正则表达式的用法。他们非常擅长评估字符串部分的字符类型和长度。很抱歉响应太晚,但感谢您的输入。我想我明天会试用正则表达式。解释:\d=number、\w=alfanumeric character、\\\\124;=pipe character、{x}=last token x感谢您的解释。明天我会尝试一下,希望它能满足我的需要。解释:\d=number、\w=alfanumeric character、\\\124;=pipe character、{x}=last token x感谢您的解释。明天我会尝试一下,希望它能满足我的需求。谢谢你的回复。我会先尝试正则表达式,但如果我无法让它工作,那么我将运行您的建议。谢谢您的回复。我将首先尝试正则表达式,但如果我无法使其工作,那么我将运行您的建议。