我需要一种干净的方法来根据内容识别记录类型

时间:2012-01-06 14:33:12

标签: c#

我有八个字符的字符串,如下所示。最后一列中存在的零标识为pr,pa,fo或它的类型记录:

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
        }

有人能想到一种更简洁的方法来编码吗?

4 个答案:

答案 0 :(得分:3)

与你所拥有的不同,只是更容易理解的IMO。

        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
        }

答案 1 :(得分:1)

测试字符串没有错:

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

答案 2 :(得分:1)

value.TrimEnd('0').Length

答案 3 :(得分:1)

您可能需要查看Filehelpers库 - 它有各种基础设施来读取和处理记录,包括确定不同记录类型的方法 - 请参阅“Multirecords

注意:Filehelpers主网站基于此库的2.0版本。 public repository中存在较新版本。在任何一种情况下,我都建议抓取库的源代码,因为我没有看到这个库的新开发方面的大量活动。