예제 #1
0
        public int PlayerNumber(string buttonName)
        {
            var match = PlayerRegex.Match(buttonName);

            return(match.Success
                                ? int.Parse(match.Groups[1].Value)
                                : 0);
        }
예제 #2
0
        public int PlayerNumber(string buttonName)
        {
            var match = PlayerRegex.Match(buttonName);

            if (match.Success)
            {
                return(int.Parse(match.Groups[1].Value));
            }
            else
            {
                return(0);
            }
        }
예제 #3
0
        /// <summary>
        /// プレイヤー文字列のパースを行います。
        /// </summary>
        /// <remarks>
        /// 受け入れ可能な構文。
        ///
        /// * 名前 メッセージ
        /// </remarks>
        public static ShogiPlayer ParsePlayer(string text)
        {
            if (string.IsNullOrEmpty(text))
            {
                return(null);
            }

            SkillLevel skillLevel = null;
            var        nickname   = string.Empty;

            // 正規化すると十が10に変換されたりしますが、
            // そうなると名前が変わってしまう可能性があります。
            // そのため、参加者のパース時は文字列の正規化を行いません。
            //
            //text = StringNormalizer.NormalizeText(
            //    text, NormalizeTextOption.Number);
            var m = PlayerRegex.Match(text);

            if (!m.Success)
            {
                return(null);
            }

            // 名前の解析します。
            if (m.Groups[1].Success)
            {
                nickname = m.Groups[1].Value;
            }

            // 棋力の解析を行います。
            if (m.Groups[2].Success)
            {
                skillLevel = ParseSkillLevel(m.Groups[2].Value);
            }

            // もし棋力か名前がnullな場合は
            // プレイヤーとして正しくありません。
            if ((skillLevel == null || string.IsNullOrEmpty(skillLevel.OriginalText)) ||
                string.IsNullOrEmpty(nickname))
            {
                return(null);
            }

            // 棋力はnull以外の値を採用します。
            return(new ShogiPlayer()
            {
                OriginalText = (string)text.Clone(),
                SkillLevel = (skillLevel ?? new SkillLevel()),
                Nickname = nickname,
            });
        }