amironov73

ASCIIChar

Oct 30th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     public struct ASCIIChar
  2.     {
  3.         public static implicit operator Char(ASCIIChar value)
  4.         {
  5.             return (char)value.asciiCode;
  6.         }
  7.  
  8.         public static bool ValidateByte(byte value)
  9.         {
  10.             return value >= 0 && value <= 127;
  11.         }
  12.         public static bool IsControl(byte value)
  13.         {
  14.             return (value >= 0 && value <= 31) ||
  15.                 value == 127;
  16.         }
  17.         public static bool IsDigit(byte value)
  18.         {
  19.             return value >= 48 && value <= 57;
  20.         }
  21.         public static bool IsLetter(byte value)
  22.         {
  23.             return (value >= 65 && value <= 90) ||
  24.                 (value >= 97 && value <= 122);
  25.         }
  26.         public static bool IsLetterOrDigit(byte value)
  27.         {
  28.             return (value >= 48 && value <= 57) ||
  29.                 (value >= 65 && value <= 90) ||
  30.                 (value >= 97 && value <= 122);
  31.         }
  32.         public static bool IsLower(byte value)
  33.         {
  34.             return value >= 97 && value <= 122;
  35.         }
  36.         public static bool IsPunctuation(byte value)
  37.         {
  38.             return (value >= 33 && value <= 35) ||
  39.                 (value >= 37 && value <= 42) ||
  40.                 (value >= 44 && value <= 47) ||
  41.                 (value >= 58 && value <= 59) ||
  42.                 (value >= 63 && value <= 64) ||
  43.                 (value >= 91 && value <= 93) ||
  44.                 value == 95 ||
  45.                 value == 123 ||
  46.                 value == 125;
  47.         }
  48.         public static bool IsSymbol(byte value)
  49.         {
  50.             return value == 36 ||
  51.                 value == 43 ||
  52.                 (value >= 60 && value <= 62) ||
  53.                 value == 94 ||
  54.                 value == 96 ||
  55.                 value == 124 ||
  56.                 value == 126;
  57.         }
  58.         public static bool IsUpper(byte value)
  59.         {
  60.             return value >= 65 && value <= 90;
  61.         }
  62.         public static bool IsWhitespace(byte value)
  63.         {
  64.             return value == 0 || (value >= 9 && value <= 13) || value == 32;
  65.  
  66.         }
  67.         public static byte ToLower(byte value)
  68.         {
  69.             if (ASCIIChar.IsUpper(value)) return (byte)(value - 32);
  70.             return value;
  71.         }
  72.         public static byte ToUpper(byte value)
  73.         {
  74.             if (ASCIIChar.IsLower(value)) return (byte)(value + 32);
  75.             return value;
  76.         }
  77.  
  78.         private readonly byte asciiCode;
  79.  
  80.         public int CompareTo(ASCIIChar value)
  81.         {
  82.             return this.asciiCode.CompareTo(value.asciiCode);
  83.         }
  84.         public bool Equals(ASCIIChar value)
  85.         {
  86.             return this.asciiCode.Equals(value.asciiCode);
  87.         }
  88.         public bool IsControl()
  89.         {
  90.             return ASCIIChar.IsControl(this.asciiCode);
  91.         }
  92.         public bool IsDigit()
  93.         {
  94.             return ASCIIChar.IsDigit(this.asciiCode);
  95.         }
  96.         public bool IsLetter()
  97.         {
  98.             return ASCIIChar.IsLetter(this.asciiCode);
  99.         }
  100.         public bool IsLetterOrDigit()
  101.         {
  102.             return ASCIIChar.IsLetterOrDigit(this.asciiCode);
  103.         }
  104.         public bool IsLower()
  105.         {
  106.             return ASCIIChar.IsLower(this.asciiCode);
  107.         }
  108.         public bool IsPunctuation()
  109.         {
  110.             return ASCIIChar.IsPunctuation(this.asciiCode);
  111.         }
  112.         public bool IsSymbol()
  113.         {
  114.             return ASCIIChar.IsSymbol(this.asciiCode);
  115.         }
  116.         public bool IsUpper()
  117.         {
  118.             return ASCIIChar.IsUpper(this.asciiCode);
  119.         }
  120.         public bool IsWhitespace()
  121.         {
  122.             return ASCIIChar.IsWhitespace(this.asciiCode);
  123.  
  124.         }
  125.         public ASCIIChar ToLower()
  126.         {
  127.             if (this.IsUpper())
  128.             {
  129.                 return new ASCIIChar((byte)(this.asciiCode + 32));
  130.             }
  131.  
  132.             return this;
  133.         }
  134.         public byte ToByte()
  135.         {
  136.             return this.asciiCode;
  137.         }
  138.         public char ToChar()
  139.         {
  140.             return (char)this.asciiCode;
  141.         }
  142.         public override string ToString()
  143.         {
  144.             return this.ToChar().ToString();
  145.         }
  146.         public ASCIIString ToASCIIString()
  147.         {
  148.             return new ASCIIString(new byte[] { this.asciiCode }, 0, 1);
  149.         }
  150.         public ASCIIChar ToUpper()
  151.         {
  152.             if (this.IsLower())
  153.             {
  154.                 return new ASCIIChar((byte)(this.asciiCode - 32));
  155.             }
  156.  
  157.             return this;
  158.         }
  159.  
  160.         public ASCIIChar(byte asciiCode)
  161.         {
  162.             if (!ASCIIChar.ValidateByte(asciiCode))
  163.             {
  164.                 throw new ArgumentOutOfRangeException("asciiCode");
  165.             }
  166.  
  167.             this.asciiCode = asciiCode;
  168.         }
  169.  
  170.         public static ASCIIChar Parse(char value)
  171.         {
  172.             if (value < 0 || value > 127)
  173.             {
  174.                 throw new ArgumentOutOfRangeException("value");
  175.             }
  176.  
  177.             return new ASCIIChar((byte)value);
  178.         }
  179.         public static ASCIIChar Parse(string value)
  180.         {
  181.             if (value == null)
  182.             {
  183.                 throw new ArgumentNullException("value");
  184.             }
  185.  
  186.             if (value.Length != 1)
  187.             {
  188.                 throw new FormatException();
  189.             }
  190.  
  191.             if (value[0] > 127)
  192.             {
  193.                 throw new ArgumentOutOfRangeException("value");
  194.             }
  195.  
  196.             return new ASCIIChar((byte)value[0]);
  197.         }
  198.     }
Add Comment
Please, Sign In to add comment