我有一个使用流阅读器从流中读取的字符串。这是在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”。我想得到somestring1和sometring2。我认为有一种更好的方法可以做到这一点,而不是将整个流转换为字符串来获取每个值。你有什么想法?谢谢!
答案 0 :(得分:0)
我建议读入字符串,然后使用如下方法分割数据:
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;
}
答案 1 :(得分:0)
我认为你可以使用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
答案 2 :(得分:0)
如果您将流转换为string
,那么您可以轻松地使用System.Web.HttpUtility.ParseQueryString(s)