如何使用string[]
解码LINQ
?
例如。我从string
而不是Institute's
string[]
Institute's
values.ForEach(item => WebUtility.HtmlDecode(item));
我试过了,
values
其中string[]
是我的Institution's
..
我仍然无法获得理想的结果。
修改
如上图所示我的原始字符串为Institute's
,我将其作为编码
Institute's
---->第一级编码
Institute's
---->二级编码
应用以下解决方案后,我能够将结果解码的第一级编码作为
Institute's
但无法获取实际字符串{{1}}
答案 0 :(得分:0)
您没有看到任何更改的原因是WebUtility.HtmlDecode
没有为您传递的参数赋值,而是返回html解码值。
String encodedString = "&";
//this does nothing
WebUtility.HtmlDecode(encodedString);
//this assigns the decoded value to a new string
String decodedString = WebUtility.HtmlDecode(encodedString);
这也是为什么(正如Henrik所说)你应该在你的linq查询中使用Select
。
您可以这样使用它:
values = values.Select(item => WebUtility.HtmlDecode(item));
答案 1 :(得分:0)
此代码剪辑为我工作:
string[] values = new string[] {
"Institute's",
"Institute's",
"Institute's",
"Institute's",
"Institute's"};
List<string> decoded = new List<string>();
Regex encDet = new Regex(@"\&.+;", RegexOptions.Compiled|RegexOptions.IgnoreCase);
values.ToList().ForEach(item => {
string decodedItem = item;
while(encDet.IsMatch(decodedItem)){
decodedItem = WebUtility.HtmlDecode(decodedItem);
}
decoded.Add(decodedItem);
});
values = decoded.ToArray();
修改强>
如果你只需要纯粹的&#34; LINQ只会解码双编码字符串,这是另一个单行代码段:
values = values.Select(item => WebUtility.HtmlDecode(WebUtility.HtmlDecode(item))).ToArray();
干杯!
答案 2 :(得分:0)
var decodedValues = HtmlDoubleDecode(values);
HtmlDoubleDecode是:
public string[] HtmlDoubleDecode(string[] values)
{
return values
.Select (v => WebUtility.HtmlDecode(WebUtility.HtmlDecode(v)))
.ToArray();
}