首页新闻找找看学习计划

字符串截取问题

0
悬赏园豆:10 [已关闭问题] 关闭于 2014-03-27 21:32

Response: Success
Message:Authentication accepted

Event: Newchannel
Privilege: call,all
Channel: SIP/503-00000000
ChannelState: 0
ChannelStateDesc: Down
CallerIDNum:
CallerIDName:
AccountCode:
Exten:
Context: DLPN_DialPlan503
Uniqueid: 1372066072.1

Event: Cdr
Privilege: cdr,all
AccountCode:
Source: 503
Destination: 13806012345
DestinationContext: DLPN_DialPlan503
CallerID: 503
Channel: SIP/503-00000000

像这么一段字符串怎么解析成一个数组,三个元素。每一段对应一个数组元素

冰 鱼的主页 冰 鱼 | 菜鸟二级 | 园豆:282
提问于:2013-11-12 20:10
< >
分享
所有回答(3)
0

简单一点,生成字符串的在每一个大的元素,加上标识,如&,在每一个小的元素后面加上小的标识如|

string strs = "Event:hhe|Handler:12&Event:hhe|Handler:12&Event:hhe|Handler:12";
            string[] strArray = strs.Split('&');
            foreach (var item in strArray) {
                Console.WriteLine( item.Split('|')[1]);
            }
秋壶冰月 | 园豆:5443 (大侠五级) | 2013-11-12 21:03

没明白你意思,要怎么加上|和&。我这个字符串是从一个邮件服务器得到的

支持(0) 反对(0) 冰 鱼 | 园豆:282 (菜鸟二级) | 2013-11-12 21:05

@冰 鱼: 我以为是你本地生成的,你从服务器上全部内容,就是这样的吗?

支持(0) 反对(0) 秋壶冰月 | 园豆:5443 (大侠五级) | 2013-11-12 21:08
0

2中方式:

1.如果你得到的值就是一行一行换行的话,你就利用换行进行分割就来就好了

  这种方案没有难度,因为一行代表一个键值对了。

2.可以使用正则表达式来进行分割。

  思路是利用 正则表达式  '[\w]\s+'  对上面的文本进行分割,你会得到一个字符串数组,结果如图左下角:

  

这样子的结果,你就好处理了吧, 不过有一些特殊处理下,如果数组内的某个元素没有冒号,说名当前这个元素是前一个元素的值,这个处理,循环一遍就好了。

袁家小黑球 | 园豆:1045 (小虾三级) | 2013-11-12 21:44

仔细对了一下结果,发现我写的正则分割出来的结果不完全正确,呵呵,lz使用时要多多注意啊

支持(0) 反对(0) 袁家小黑球 | 园豆:1045 (小虾三级) | 2013-11-12 21:48

@袁家小黑球: 我刚才自己突然发现可以把\r\n\r\n先替换成一个特殊字符,然偶在分割就可以了。

支持(0) 反对(0) 冰 鱼 | 园豆:282 (菜鸟二级) | 2013-11-12 22:55
0

先把\r\n\r\n先替换成一个特殊字符,然后在用这个特殊字符分割就可以了

冰 鱼 | 园豆:282 (菜鸟二级) | 2013-11-12 22:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册