括弧のペアが全角/半角で揃っていないデータを修正
横着正規表現シリーズです。
括弧のペアが全角/半角で揃っていないデータを修正しろ!と言われた場合。
// 全角括弧、半角括弧をそろえる 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