/// <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; }
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; }
/// <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'))); }
/// <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)); }
/// <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')); }