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
像这么一段字符串怎么解析成一个数组,三个元素。每一段对应一个数组元素
简单一点,生成字符串的在每一个大的元素,加上标识,如&,在每一个小的元素后面加上小的标识如|
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]); }
没明白你意思,要怎么加上|和&。我这个字符串是从一个邮件服务器得到的
@冰 鱼: 我以为是你本地生成的,你从服务器上全部内容,就是这样的吗?
2中方式:
1.如果你得到的值就是一行一行换行的话,你就利用换行进行分割就来就好了
这种方案没有难度,因为一行代表一个键值对了。
2.可以使用正则表达式来进行分割。
思路是利用 正则表达式 '[\w]\s+' 对上面的文本进行分割,你会得到一个字符串数组,结果如图左下角:
这样子的结果,你就好处理了吧, 不过有一些特殊处理下,如果数组内的某个元素没有冒号,说名当前这个元素是前一个元素的值,这个处理,循环一遍就好了。
仔细对了一下结果,发现我写的正则分割出来的结果不完全正确,呵呵,lz使用时要多多注意啊
@袁家小黑球: 我刚才自己突然发现可以把\r\n\r\n先替换成一个特殊字符,然偶在分割就可以了。
先把\r\n\r\n先替换成一个特殊字符,然后在用这个特殊字符分割就可以了