我需要一种基于内容识别记录类型的干净方法

本文关键字:类型 记录 识别 方法 于内容 一种 | 更新日期: 2023-09-27 18:19:42

我有八个字符的字符串,如下所示。最后一列中出现的零将这些标识为类型pr、pa、fo或it记录:

01020304
01020300
01020000
01000000

我已经编码了以下内容,但对我来说它看起来很笨拙。

        if ( id.Substring(2) == "000000") {
            // pr record
        } else if ( id.Substring(4) == "0000") {
            // pa record
        } else if ( id.Substring(6) == "00") {
            // fo record
        } else {
            // it record
        }

有人能想出一种更干净的编码方式吗?

我需要一种基于内容识别记录类型的干净方法

与现有内容没有太大区别,只是可读性更强一点。

        const string PR = "000000";
        const string PA = "0000";
        const string FO = "00";
        if (id.EndsWith(PR))
        {
            // pr record
        }
        else if(id.EndsWith(PA))
        {
            // pa record
        }
        else if (id.EndsWith(FO))
        {
            // fo record
        }
        else
        {
            // it record
        }

通过value.TrimEnd('0').Length

测试字符串没有错:

  1. 子字符串可能会生成一个新的字符串对象
  2. C#中是否没有CCD_ 2
  3. 编写计算尾随零数的函数是相当容易的。然后你可以做switch(trailingZeros(id)) { case 0: ... }

您可能想看看Filehelpers库——它有各种读取和处理记录的基础设施,包括确定不同记录类型的方法——请参阅"多记录"。

注意:主要的Filehelpers网站是基于这个库的2.0版本。公共存储库中存在更新的版本。无论哪种情况,我都建议获取该库的源代码,因为我还没有看到大量关于该库新开发的活动。