1

将“[{a},{b},{c}]”拆分为数组的最佳方法是什么,例如:stringt

t[0] == "a"
t[1] == "b"
t[2] == "c"

将输入字符串视为逐字,方括号和大括号实际上都在那里。

更新: 这是我需要拆分的更具体示例

[{ pk:"4",id:"4",cb_program_id:"2.0000",DataSource:"1",Status:"0",CutoffDate:"15/10/2012 14:05:04" }, 
{ pk:"3",id:"3",cb_program_id:"2.0000",DataSource:"1",Status:"0",CutoffDate:"15/10/2012 14:05:02" }, ... ]
4

3 回答 3

6

用于String.Split删除所有不需要的字符。

"[{a},{b},{c}]".Split(new char[] {'[', ']', '{', '}', ','}, StringSplitOptions.RemoveEmptyEntries);

编辑:在 OP 的编辑之后,@Daniel 的答案更适合维护子字符串的完整性。

于 2013-01-08T11:52:20.280 回答
4
var t = s.Trim('[', ']').Split(',').Select(x => x.Trim('{', '}')).ToArray();

这将首先删除外部括号,用逗号分隔并删除结果开头和结尾的花括号。

要覆盖嵌入的特殊字符(如逗号或花括号),您需要对它们进行转义,否则将存在可能以多种方式拆分的模棱两可的字符串。

于 2013-01-08T11:53:28.440 回答
0

这是工作示例:

string str = "[{a},{b},{c}]";
string[] t = str.Split(new char[] { '[', ']', '{', '}', ',' },
             StringSplitOptions.RemoveEmptyEntries)
             .ToArray();

输出:

t[0] == "a"
t[1] == "b"
t[2] == "c"
于 2013-01-08T11:55:11.847 回答