使用Regexp获取KeyValuePair中的信息

时间:2011-05-16 05:47:24

标签: c# regex

帮我解析一下这条消息:

text=&direction=re&orfo=rus&files_id=&message=48l16qL2&old_charset=utf-8&template_id=&HTMLMessage=1&draft_msg=&re_msg=&fwd_msg=&RealName=0&To=john+%3Cjohn11%40gmail.com%3E&CC=&BCC=&Subject=TestSubject&Body=%3Cp%3EHello+%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82+%D1%82%D0%B5%D0%BA%D1%81%D1%82%3Cbr%3E%3Cbr%3E%3C%2Fp%3E&secur

我想在KeyValuePair中获取信息:
键 - 值
文字 -
方向 - 重新 等等。
以及如何转换它:Hello+%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82+%D1%82%D0%B5%D0%BA%D1%81%... 有西里尔字符。
感谢。

2 个答案:

答案 0 :(得分:4)

如果你想使用正则表达式,你可以这样做:

// I only added the first 3 keys, but the others are basically the same
Regex r = new Regex(@"text=(?<text>.*)&direction=(?<direction>.*)&orfo=(?<orfo>.*)");
Match m = r.Match(inputText);

if(m.Success)
{
    var text = m.Groups["text"].Value; // result is ""
    var direction = m.Groups["direction"].Value; // re
    var orfo = m.Groups["orfo"].Value;
}

然而,BoltClock建议的方法好多了

System.Collections.Specialized.NameValueCollection collection = 
    System.Web.HttpUtility.ParseQueryString(inputString);

答案 1 :(得分:2)

看起来你正在处理一个URI,最好使用正确的类而不是尝试并找出详细的处理。

http://msdn.microsoft.com/en-us/library/system.uri.aspx