我有一些十六进制值的字符串。 例如:
<font color=**"&amp;****amp;**;**amp;#x23;**336699">Hi How ARE YOU</font>
我想将上面的字符串存储到数据库中。在这个字符串中我找到了一些十六进制值。 存储时我想将十六进制转换为字符串。 在C#.net中是否有任何解决方案。
答案 0 :(得分:0)
要解析Hex,你可以这样做:
var hex = "0xFFFFFF";
uint color;
if(uint.TryParse(hex, NumberStyles.HexNumber, CultureInfo.CurrentCulture, out color))
{
//Parsing ok
}else{
color = 0; //Parsing failed
}
我上面不知道你的字符串,所以我不确定如何从中提取字符串。
编辑#1:
据我了解你要解析这个字符串
<font color=**"&amp;****amp;**;**amp;#x23;**336699">Hi How ARE YOU</font>
并生成字符串
<font color=0x0987AF>Hi How ARE YOU</font>
我不知道你的色码是如何创建的,所以我无法解析它。
它被嵌入到常规语言中,您可以使用regular expressions将重要的和平放在一起并解析这些结果。如果它是HTML或类似的东西你不能使用正则表达式,而应该逐个字符地迭代它。在这种情况下,使用StringBuilder来保持代码快速。
一旦你将所有的字符串组合在一起,你就可以单独解析它们,计算颜色,然后再用String.Format(""{0:X06}"", color)
将它作为十六进制输出。
编辑#2:
我不知道那个颜色字符串的编码,所以我只能粗略估计一下我将如何解析它。
我假设该字符串中的最后一位数字是颜色,其他一切都只是噪音。所以这个
<font color=**"&amp;****amp;**;**amp;#x23;**336699">Hi How ARE YOU</font>
应转换为此
<font color="&336699">Hi How ARE YOU</font>
我没有显示隔离颜色字符串的第一部分,但我想请注意,您不应该尝试使用regular expressions on html。而是像使用mathematical expression一样逐个字符地浏览它。
String examplestring = @"color=**""&amp;****amp;**;**amp;#x23;**336699""";
Console.WriteLine(examplestring);
String lastsixnumbers = examplestring.Substring(examplestring.Length - 7, 6);
Console.WriteLine(lastsixnumbers);
String final = String.Format("color=\"#{0}\"", lastsixnumbers);
Console.WriteLine(final);
Console.ReadKey();
这有用吗?如果没有,那么我对颜色代码的理解可能是错误的 - 你可以使用color codes提供更多实际匹配的结果,或者甚至更好地向我提供颜色编码的知识。