一、需求:

知道某段范围
0x0020~0x007F
0x00A0~0x017F
0x01A0~0x01CF
0x01F0~0x01FF
0x0210~0x021F
0x1EA0~0x1EFF
给定一个值,快速判断给定值是否在以上编码范围内

二、解决方案


用面向对象的方案解决

1、每个段都有一个最小值,一个最大值,定义一个类

  1. public Section(int minValue, int maxValue)
  2. {
  3. this.MinValue = minValue;
  4. this.MaxValue = maxValue;
  5. }
  6.  
  7. /// <summary>
  8. /// 存储最小值
  9. /// </summary>
  10. public int MinValue { get; set; }
  11.  
  12. /// <summary>
  13. /// 存储最大值
  14. /// </summary>
  15. public int MaxValue { get; set; }

2、初始化数据

  1. private static readonly List<Section> lstSections;
  2.  
  3. static Program()
  4. {
  5. lstSections = new List<Section>
  6. {
  7. new Section(0x0020, 0x007F),
  8. new Section(0x00A0, 0x017F),
  9. new Section(0x01A0, 0x01CF),
  10. new Section(0x01F0, 0x01FF),
  11. new Section(0x0210, 0x021F),
  12. new Section(0x1EA0, 0x1EFF)
  13. };
  14.  
  15. }

用linq比较大小验证方法

  1. /// <summary>
  2. /// Vaid
  3. /// </summary>
  4. /// <param name="value"></param>
  5. /// <returns>True:在这个范围 Fase:不在这个范围</returns>
  6. public static bool IsValidSection(int value)
  7. {
  8. var lstFind = lstSections.FindAll(p => value >= p.MinValue && value <= p.MaxValue);
  9. return lstFind.Count > ;
  10. }

调用该方法:

  1. static void Main(string[] args)
  2. {
  3.  
  4. while (true)
  5. {
  6. Console.Write("请输入一个16进制数值:");
  7. var input = Console.ReadLine();
  8. if (input == "q")
  9. {
  10. break;
  11. }
  12. var result = ;
  13. var b = int.TryParse(input.ToUpper(), NumberStyles.AllowHexSpecifier, null, out result);
  14. if (b)
  15. {
  16. Console.WriteLine("{0}-{1}", input, IsValidSection(result) ? "在给定范围内" : "不在给定范围内");
  17. }
  18. else
  19. {
  20. Console.WriteLine("输入值错误");
  21. }
  22. }
  23.  
  24. }

利用linq快速判断给定数字是否包含在某个段范围内的更多相关文章

  1. C语言中的位操作(12)--判断一个数字是否包含一个全零字节

    本文主要介绍一系列算法,算法主要功能是判断一个数字(二进制)中是否包含全零字节 e.g.1010 1111 0000 0000 1001 1111 0001 1111 即 32位整数:A4A3A2A1 ...

  2. ef linq 中判断实体中是否包含某集合

    我有一个需求,问题有很多标签,在查询时,需要筛选包含查询标签的一个集合(List<int>),以前的做法是先查询出来符合查询标签条件的标签id的结果集A,再查询问题时,加上判断是否包含该标 ...

  3. [CodeWars][JS]如何判断给定的数字是否整数

    问题描述: We are asking for a function to take a positive integer value, and return a list of all positi ...

  4. 给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 ,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)

    """ #给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 #返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况) 解题思路: 1.设定一个 ...

  5. iOS开发-通过正则表达式进行各种判断银行卡,车牌号,邮箱地址,QQ,身份证,全字母,仅输入字母或数字同时包含大小写字母和数字,仅能输入中文等

    /* *  验证银行卡号是否正确 *  车牌号验证 *  检验邮箱地址是否正确 *  手机号中间四位密文显示 *  判断QQ号是否正确(5-11位) *  判断身份证号是否正确(如末位为字母请用“x” ...

  6. 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能

    权声明:本文为博主原创文章,未经博主允许不得转载. 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内.以及两点间的测距功能. 绘制多边形(蓝色) ...

  7. SQL Server判断某个字段是否包含中文/英文字符/数字

    原文:SQL Server判断某个字段是否包含中文/英文字符/数字 因最近在清理系统中的脏数据,需要查询某个字段是否包含中文/英文字符/数字的数据, 比较简单,仅以此篇博客做一个简单总结,方便以后查阅 ...

  8. javascript中按位操作的应用,如何快速取整 判断字符串是否是包含某字符串

    最近在看最基础的<javascript高级程序设计>看的灰常慢,看到按位运算这里,突然反思,这种鬼操作到底有什么实际的应用呢? 按位运算符有6个 & 按位与:a & b | ...

  9. SQL判断字符串里不包含字母

    Oracle: 方法一:通过To_Number 函数异常来判断,因为这个函数在转换不成功的时候是报错,所以只能用存储过程包装起来. CREATE OR REPLACE FUNCTION Is_Numb ...

随机推荐

  1. C++必备知识

    新进C++程序员应在一年内完成学习“basic”类别知识点,两年内完成学习“advance”类别知识点,三到四年内完成学习“expert”1.基础(Basic)(1)变量与基本类型:(2)typede ...

  2. Quartz 有状态的JobDataMap

    Quartz,每次执行job,job永远是全新的对象,但是,如果job实现org.quartz.StatefulJob接口,而不是job接口. 此时JobDetail的JobDataMap将会共享一个 ...

  3. dump iot表

    SQL> create user scan identified by scan default tablespace users; User created. SQL> grant db ...

  4. HDU-2576 Tug of War

    http://poj.org/problem?id=2576 二维数组01背包的变形. Tug of War Time Limit: 3000MS   Memory Limit: 65536K Tot ...

  5. 卡特兰数(Catalan Number) 算法、数论 组合~

    Catalan number,卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡特兰数的前几个数 前20项为( ...

  6. HDU 4720 Naive and Silly Muggles 2013年四川省赛题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4720 题目大意:给你四个点,用前三个点绘制一个最小的圆,而这三个点必须在圆上或者在圆内,判断最一个点如 ...

  7. StoryBoard 的使用

    简单入门: http://my.oschina.net/plumsoft/blog/53886 详细操作:http://www.cnblogs.com/buro79xxd/archive/2012/0 ...

  8. Delphi 对象的创建(create)与释放(free/destory)

    Delphi 对象的创建(create)与释放(free/destory) 1.Create参数为:nil/self/application的区别,最好能看到实际效果的区别 例如: My := TMy ...

  9. [Java] Java IO Files

    Files 使用 FileInputStream 或 FileReader 可以用于读入文件,前者基于二进制,后者基于文本.使用它们不需要读取整个文件,但是只能按照它们存储的顺序,依次读取字节,或字符 ...

  10. ReactiveCocoa Tutorial

    ReactiveCocoa Tutorial – The Definitive Introduction: Part 1/2 ReactiveCocoa教程——明确的介绍:第一部分(共两部分) As ...