首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证和排序不同格式的各种序列号?

验证和排序不同格式的各种序列号?
EN

Stack Overflow用户
提问于 2010-10-21 00:49:28
回答 2查看 540关注 0票数 0

我面临以下问题。我需要在c#中捕获一系列序列号,以便存储在数据库中。如果这些序列号只是数字,那也没问题,但我遇到过由字母数字组成的序列号,例如:

56AAA71064D6和56AAA7105A25

如何适应序列号范围可能存在的不同可能性?

假设所有序列号都有一定的顺序,我如何解析它的连续部分呢?

数据库已经将序列号作为字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-21 01:03:27

如果你的序列号有相同的宽度,那么很容易……

您必须使用string.compare方法来获取范围。

代码语言:javascript
复制
int MaxLength = 20;

private string Pad(string val){
   if(val.Length < 20){
      val = new String('0', MaxLength - val.Length) + val;
   }
   return val;
}

public bool IsBetween(string num, string start, string end){
    num = Pad(num);
    start = Pad(num);
    end = Pad(num);
    return String.Compare(num,start)>=0 && String.Compare(num,end)<=0;
}

如果你对所有的序列号进行排序,那么你就可以很容易地获得range。

如果它们的宽度不同,那么你必须在较小的长度字符串之前填充0,以使它们都相同大小。

票数 0
EN

Stack Overflow用户

发布于 2010-10-21 00:57:50

如果您的数据库假设序列号是数字,则需要更改数据库的该部分以允许字母数字值,或者定义一个新的映射表以将外部序列号与唯一的数字ID相关联,以便您可以继续使用数字作为数据库中序列号的内部表示形式。

您还必须添加支持,以便以一种并发安全的方式为给定的字母数字输入分发一个新的、唯一的内部序列号。

编辑:我的意思是,当一个新的字母数字序列号必须在数据库中注册时,您应该使用一个事务来执行此操作,该事务自动向原始(数字)序列号列表添加一条记录,并在新表中添加第二条记录,该记录将数字值与字母数字值相关联。如果这不是原子的,那么方案就会崩溃。删除也必须以原子方式处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3980341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档