首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-08-17 
字符读取操作,被大括号{}难住了,求解有人给了个网络通信协议报文,格式为:{学校}{班级}{课目}{{姓名1}{姓名

字符读取操作,被大括号{}难住了,求解
有人给了个网络通信协议报文,
格式为:{学校}{班级}{课目}{{姓名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(); 

热点排行