Пример #1
0
 /// <summary>
 /// 文字列を元にこのクラスのインスタンスを生成します。
 /// </summary>
 /// <param name="value">文字列</param>
 /// <returns>インスタンス</returns>
 /// <exception cref="ArgumentException">文字列に数字以外の文字が含まれているか、文字列が空である場合</exception>
 /// <exception cref="ArgumentNullException">文字列が<c>null</c>である場合</exception>
 public static Digits Of(string value)
 {
     CheckUtility.MustNotBeEmpty(value, nameof(value));
     if (Regex.IsMatch(value, "[^0-9]"))
     {
         throw new ArgumentException("Non-digit character is found.");
     }
     return(new Digits(value));
 }
        internal RegistrationGroupRule(string range, int length)
        {
            CheckUtility.MustNotBeEmpty(range, nameof(range));
            CheckUtility.MustBeGreaterThanOrEqual0(length, nameof(length));

            var rs = range.Split('-');

            RangeStart = rs[0].Substring(0, length);
            RangeEnd   = rs[1].Substring(0, length);
            Length     = length;
        }
Пример #3
0
        internal RegistrationGroup(string prefix, string agency, IEnumerable <RegistrationGroupRule> rules)
        {
            CheckUtility.MustNotBeEmpty(prefix, nameof(prefix));
            CheckUtility.MustNotBeEmpty(agency, nameof(agency));
            CheckUtility.MustNotBeEmpty(rules, nameof(rules));

            Prefix = prefix;
            PrefixWithoutHyphen = prefix.Replace("-", string.Empty);
            Agency = agency;
            Rules  = rules;
        }
Пример #4
0
        /// <summary>
        /// 整数値を元にこのクラスのインスタンスを生成します。
        /// <see cref="Length"/>の値は第2引数と同じ値となります。
        /// </summary>
        /// <param name="value">整数値</param>
        /// <param name="length">桁数</param>
        /// <returns>インスタンス</returns>
        /// <exception cref="ArgumentException">第1引数の整数値の持つ桁数が第2引数で指定された桁数よりも大きい場合</exception>
        /// <exception cref="ArgumentOutOfRangeException">第1引数の整数値が負数である場合、
        /// もしくは、第2引数の整数値が1より小さい場合</exception>
        public static Digits Of(int value, int length)
        {
            CheckUtility.MustBeGreaterThanOrEqual0(value, nameof(value));
            CheckUtility.MustBeGreaterThan0(length, nameof(length));
            var s = value.ToString();

            if (s.Length > length)
            {
                throw new ArgumentException("Mismatch between number of digits and value of length.");
            }
            return(Of(value.ToString().PadLeft(length, '0')));
        }
Пример #5
0
 /// <summary>
 /// 整数値を元にこのクラスのインスタンスを生成します。
 /// <see cref="Length"/>の値は当該整数値の持つ桁数と同じ値となります。
 /// </summary>
 /// <param name="value">整数値</param>
 /// <returns>インスタンス</returns>
 /// <exception cref="ArgumentOutOfRangeException">整数値が負数である場合</exception>
 public static Digits Of(int value)
 {
     CheckUtility.MustBeGreaterThanOrEqual0(value, nameof(value));
     return(new Digits(value));
 }
Пример #6
0
 /// <summary>
 /// 整数をそれを表すASCII文字に変換します。
 /// サポートする整数は<c>0</c>から<c>10</c>までです。
 /// とくに<c>10</c>の場合は<c>'X'</c>を返します。
 /// </summary>
 /// <param name="v">整数</param>
 /// <returns>ASCII文字</returns>
 static char intToChar(int v)
 {
     CheckUtility.MustBeBetween(v, 0, 10, nameof(v));
     return(v == 10 ? 'X' : (char)(v + '0'));
 }