すらいむがあらわれた

こまんど >  たたかう  にげる

括弧のペアが全角/半角で揃っていないデータを修正

横着正規表現シリーズです。
括弧のペアが全角/半角で揃っていないデータを修正しろ!と言われた場合。

        // 全角括弧、半角括弧をそろえる
        public static string ModifyParen(string line)
        {
            // \u0028 (  Left Parenthesis
            // \u0029 )  Right Parenthesis
            // \uff08 (  Fullwidth Left Parenthesis
            // \uff09 )Fullwidth Right Parenthesis

            string tmp = line;
            tmp = Regex.Replace(tmp, "([((]).+?([))])",
            delegate(Match m)
            {

                string ret = m.Value;
                string g1 = m.Groups[1].Value;
                string g2 = m.Groups[2].Value;

                // 括弧の種類がそろってない場合
                if (Convert.ToChar(g2) - Convert.ToChar(g1)  != 1)
                {
                    string newG2 =  (Convert.ToChar(Convert.ToChar(g1) + 1)).ToString();
                    ret = ret.Replace(g2, newG2);
                }

                return ret;

            });

            return tmp;

        }

括弧の種類が増えてもある程度ラクに対応できるかな〜と思ってやってみました。もくろみどおりにいくといいけど。


参考:
Qiita - C#で、文字コードを表す文字列から、文字に変換する
http://qiita.com/rohinomiya/items/ca30f311f881cbb33ca8