高分求教!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
)
请问各位专家、高手,如何实现将匹配的数组输出,我知道可以用正则表达式 ,怎么用?还有别的方法吗?
...全文
1471 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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";}
}


111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧