高分求教!c#如何将字符串转换为数组?

edu0396 2008-07-18 02:24:54
c#调用webservice后,返回序列化后的字符串,如经过序列化后的字符串:
a:3:{i:0;a:3:{i:0;s:4:"dfdf";i:1;s:4:"dsfg";i:2;s:4:"gfgg";}i:1;a:3:{i:0;s:3:"jkj";i:1;s:2:"jj";i:2;s:3:"ffg";}i:2;a:3:{i:0;s:3:"sdd";i:1;s:5:"dfsdf";i:2;s:4:"gfgh";}}
,三次解析后,结果应该是这种形式, c=

Array
(
[0] => Array
(
[0] => dfdf
[1] => dsfg
[2] => gfgg
)
请问各位专家、高手,如何实现将匹配的数组输出,我知道可以用正则表达式 ,怎么用?还有别的方法吗?
...全文
1198 14 点赞 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lllanm 2008-09-11
看看正则表达式最简单的实现, 结合一下自己的FOR语句 对比一下啊, 看能不能改进一下
http://book.csdn.net/bookfiles/801/10080124088.shtml
  • 打赏
  • 举报
回复
edu0396 2008-07-24
谢谢各位,问题上周解决。
我用的for循环
并且还犯过错,就是没考虑到""之间还可能出现"的情况,还好解决了。
  • 打赏
  • 举报
回复
pisces007 2008-07-21
测试代码:

string a="a:3:{i:0;a:3:{i:0;s:4:\"dfdf\";i:1;s:4:\"dsfg\";i:2;s:4:\"gfgg\";}"
+"i:1;a:3:{i:0;s:3:\"jkj\";i:1;s:2:\"jj\";i:2;s:3:\"ffg\";}"
+"i:2;a:3:{i:0;s:3:\"sdd\";i:1;s:5:\"dfsdf\";i:2;s:4:\"gfgh\";}}";

string[] str1 = System.Text.RegularExpressions.Regex.Split(a.Substring(0,a.Length-3), ";}");

Console.WriteLine(str1.Length);//这里就可以得出有几组数据。
//如string[][] t = new string[3][];

foreach (string i in str1)
{
string tmp = "\"" + i;

string[] str2 = System.Text.RegularExpressions.Regex.Split(tmp, "\"[^\"]*\"");
int l2 = str2.Length;

foreach (string j in str2)
{
Console.WriteLine(j); //输出多了一个空字符串,你可以处理一下
}

}
  • 打赏
  • 举报
回复
qjlsharp 2008-07-18
帮顶了,意思我是懂了
  • 打赏
  • 举报
回复
edu0396 2008-07-18
我8楼的问题已解决。
现在的问题是我如何获取到Array[m][n]这个数组的m、n值。
  • 打赏
  • 举报
回复
vbnet_yan 2008-07-18
b + = a.Substring(1, i - 1);
  • 打赏
  • 举报
回复
edu0396 2008-07-18
对于4楼,是控制台应用程序输出b,
请问若想把b的值赋到一个文本框里,该怎么写?
我用this.textbox.text=b;只得到了最后一个元素gfgg。
  • 打赏
  • 举报
回复
yagebu1983 2008-07-18
我没搞过正则表达式!!
  • 打赏
  • 举报
回复
edu0396 2008-07-18
继续请教!谢谢黑白关刀,还不是那样子。
对于字符串a:3:{i:0;a:3:{i:0;s:4:"dfdf";i:1;s:4:"dsfg";i:2;s:4:"gfgg";}i:1;a:3:{i:0;s:3:"jkj";i:1;s:2:"jj";i:2;s:3:"ffg";}i:2;a:3:{i:0;s:3:"sdd";i:1;s:5:"dfsdf";i:2;s:4:"gfgh";}}
假设数组是Array[m][n],我要的结果是判断出数组的m,n值(分别为3,3),然后找到每一个""里的值,付到数组Array[3][3]里。
最后得出Array
(
[0] => Array
(
[0] => dfdf
[1] => dsfg
[2] => gfgg
)

[1] => Array
(
[0] => jkj
[1] => jj
[2] => ffg
)

[2] => Array
(
[0] => sdd
[1] => dfsdf
[2] => gfgh
)

)
  • 打赏
  • 举报
回复
yagebu1983 2008-07-18
够复杂的!!
  • 打赏
  • 举报
回复
pisces007 2008-07-18
比如说:

string a=":{i:0;a:3:{i:0;s:4:\"dfdf\";i:1;s:4:\"dsfg\";i:2;s:4:\"gfgg\";}";
while (a.IndexOf("\"")!=-1)
{
a = a.Substring(a.IndexOf("\""));

int i = a.IndexOf("\"",1);
string b = a.Substring(1, i - 1);
Console.WriteLine(b);//这就是想要的吧?
a = a.Substring(i+1);

}
  • 打赏
  • 举报
回复
edu0396 2008-07-18
能具体些吗 谢谢
  • 打赏
  • 举报
回复
pisces007 2008-07-18
indexof加上substring应该就可以
  • 打赏
  • 举报
回复
lllanm 2008-07-18
大哥 你的这个字符串结构相当的清晰, 直接解析好了,
a:3:(3个ARRAY)
{
i:0;a:3:{i:0;s:4:"dfdf";i:1;s:4:"dsfg";i:2;s:4:"gfgg";}
i:1;a:3:{i:0;s:3:"jkj";i:1;s:2:"jj";i:2;s:3:"ffg";}
i:2;a:3:{i:0;s:3:"sdd";i:1;s:5:"dfsdf";i:2;s:4:"gfgh";}
}


  • 打赏
  • 举报
回复
相关推荐
发帖
C#
创建于2007-09-28

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2008-07-18 02:24
社区公告

让您成为最强悍的C#开发者