日期:2014-05-18  浏览次数:20883 次

C#截取字符串
string a =" [{"name":"张三","age":16},{"name":"李四","age":15},{"name":"王武","age":20},{"name":"臧黄","age":13}] ";

将a这个字符串,只截取大括号{}里面的!哪位高手可以帮忙解决???

------解决方案--------------------
C# code
 string jsonStr = " [{\"name\":\"张三\",\"age\":16},{\"name\":\"李四\",\"age\":15},{\"name\":\"王武\",\"age\":20},{\"name\":\"臧黄\",\"age\":13}] ";
                string[] result1 = Regex.Matches(jsonStr,@"\{[^{}]+?\}").Cast<Match>().Select(a=>a.Value).ToArray();
                /*
                         [0]    "{\"name\":\"张三\",\"age\":16}"    string
                        [1]    "{\"name\":\"李四\",\"age\":15}"    string
                        [2]    "{\"name\":\"王武\",\"age\":20}"    string
                        [3]    "{\"name\":\"臧黄\",\"age\":13}"    string

                 */


                string[] result2 = Regex.Matches(jsonStr, @"(?<=\{)[^{}]+?(?=\})").Cast<Match>().Select(a => a.Value).ToArray();
                /*
                         [0]    "\"name\":\"张三\",\"age\":16"    string
                        [1]    "\"name\":\"李四\",\"age\":15"    string
                        [2]    "\"name\":\"王武\",\"age\":20"    string
                        [3]    "\"name\":\"臧黄\",\"age\":13"    string

                 */

------解决方案--------------------
string a =" [{"name":"张三","age":16},{"name":"李四","age":15},{"name":"王武","age":20},{"name":"臧黄","age":13}] ";

大家的答案很多,应该能实现你说的。

方法不外乎就那些。 

 1 自己的方法: 字符串截取, 这个很好弄.while 循环查找"{", 后面一个减去前面一个的位置,再减去1,就是要截取的长度。其实分割更快,按照","分割,在处理索引为0的和length-1的。

 2 正则表达式匹配。
var array=Regex.Matches(a,@"{[^}]*}").Cast<Match>().Select(t=>t.Value).ToArray();

3 他们说的josn格式

推荐第二个