读书人

字符读取操作被大括号{}难住了求解

发布时间: 2012-08-17 02:08:34 作者: rapoo

字符读取操作,被大括号{}难住了,求解
有人给了个网络通信协议报文,
格式为:{学校}{班级}{课目}{{姓名1}{姓名2}}{{成绩}{成绩}},
例如{第一中学}{一年级}{数学}{{张三}{李四}}{{89}{92}}。
实际的格式更复杂,大括号是层层嵌套,括号多的的不得了,我想按层读取括号,比如,第一次读取到{第一中学}{一年级}{数学},第二次读取到{{张三}{李四}}。括号的层数不是固定的,只读取求高手给支招,怎么处理这么多的大括号?是用split呢,还是正则或其他。请给详细答案,谢谢!



[解决办法]

C# code
            string tstr = "{第一中学}{一年级}{数学}{{张三}{李四}}{{89}{92}}";            //Regex reg = new Regex(@"\{[^\{\}]* ( ( (?'Open'\{)[^\{\}]* )+ ( (?'-Open'\})[^\{\}]* )+ )* (?(Open)(?!)) \}");            //Regex reg = new Regex(@"\{[^{}]*\}");            Regex reg = new Regex(@"\{[^{}]*(((?'Open'{)[^{}]*)+((?'-Open'})[^{}]*)+)*(?(Open)(?!))\}");            string text = "";            MatchCollection mc = reg.Matches(tstr);            foreach (Match m in mc)            {                Console.WriteLine(m.Value);            }            Console.ReadLine(); 

读书人网 >C#

热点推荐