2

我有一些十六进制值的字符串。例子:

<font color=**"&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699">Hi How ARE YOU</font>

我想将上面的字符串存储到数据库中。在这个字符串中我找到了一些十六进制值。在存储时我想将十六进制转换为字符串。C#.net 中是否有任何解决方案。

4

1 回答 1

0

要解析十六进制,您将执行以下操作:

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=**"&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699">Hi How ARE YOU</font>

并产生这条线

<font color=0x0987AF>Hi How ARE YOU</font>

我不知道你的颜色代码是如何创建的,所以我无法解析它。

它嵌入到常规语言中,您可以使用正则表达式将重要的和平组合在一起并解析这些结果。如果它是 HTML 或类似的东西,你不能使用正则表达式,而应该逐个字符地遍历它。在这种情况下,请使用 StringBuilder 来保持您的代码速度。

将所有字符串组合在一起后,您可以单独解析它们,计算颜色,然后String.Format(""{0:X06}"", color)再次将其输出为十六进制。


编辑#2:

我不知道那个颜色字符串的编码,所以我只能粗略估计我将如何解析它。

我假设该字符串中的最后一个数字是颜色,其他一切都只是噪音。所以这

<font color=**"&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699">Hi How ARE YOU</font>

应该变成这个

<font color="&336699">Hi How ARE YOU</font>

我没有展示隔离颜色字符串的第一部分,但我想指出你不应该尝试在 html 上使用正则表达式而是像使用数学表达式一样逐个字符地遍历它。

 String examplestring = @"color=**""&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**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();

这有帮助吗?如果不是,那么我对颜色代码的理解可能是错误的 - 然后您能否使用颜色代码提供更多实际匹配的结果,或者更好地为我提供颜色编码的知识。

于 2012-09-14T09:02:08.617 回答