- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一些十六进制值的字符串。示例:
<font color=**"&amp;****amp;**;**amp;#x23;**336699">Hi How ARE YOU</font>
我想将上面的字符串存储到数据库中。在这个字符串中,我发现了一些十六进制值。存储时我想将十六进制转换为字符串。C#.net 有解决办法吗?
最佳答案
要解析一个十六进制,你会做这样的事情:
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 可以使您的代码保持快速。
一旦你把所有的 stringpeaces 放在一起,你就可以单独解析它们,计算颜色,然后使用 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 提供更多实际匹配的结果?甚至更好地向我提供颜色编码方式的知识。
关于c# - 如何将十六进制转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12421081/
我是一名优秀的程序员,十分优秀!