从流中读取的字符串中获取特定值



>我有一个使用流阅读器从流中读取的字符串。这是在 WEB API 调用之后,并从请求中获取响应。对于清除视图,这是我的代码。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("SOME URL");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader reader = new StreamReader(resStream);
string s = reader.ReadToEnd();
resStream.Flush();
resStream.Close();
reader.Close();

我的字符串的值为"value1=sometring1&value2=somestring2"。我想得到一些字符串1和sometring2。我认为有一种更好的方法来做到这一点,而不是将整个流转换为字符串来获取每个值。你有什么想法吗?谢谢!

如果将流转换为string,则可以轻松地获得 somestring1 和 sometring2 System.Web.HttpUtility.ParseQueryString(s)

我建议读取字符串,然后使用如下方法拆分数据:

private Dictionary<string, string> SplitValuePairString(string originalString)
{
    Dictionary<string, string> result = new Dictionary<string, string>();
    if (string.IsNullOrEmpty(originalString))
    {
        var keyValuePairs = originalString.Split(new char[] { '&' });
        foreach (string keyValuePair in keyValuePairs)
        {
            var parts = keyValuePair.Split(new char[] { '=' });
            if (parts.Length == 2)
            {
                result.Add(parts[0], parts[1]);
            }
        }
    }
    return result;
}

我认为您可以使用Regex解析字符串响应(如果它始终具有此数量的参数,否则您将在MatchCollection中获得更多结果):

MatchCollection results = Regex.Matches(reader.ReadToEnd(), "=([a-z]*[0-9]*)");
string value1 = results[0].Groups[1].Value;
string value2 = results[1].Groups[1].Value;

此代码完全从字符串 "value1=sometring1&value2=somestring2" 返回:

somestring1
somestring2

相关内容

  • 没有找到相关文章

最新更新