我正在尝试编写一个正则表达式,通过它我可以用字符串中的十六进制代码替换 rgb 颜色值。字符串可能有以下类型:
=> rgb(0, 0, 0) 0 0 0
=> rgb(0 100, 200)
=> 0 0 rgb(201,45,65)
首先,我想从字符串中访问 rgb 值,然后用十六进制代码替换它。所以结果将是:
=> #XXXXXX 0 0 0
=> #XXXXXX
=> 0 0 #XXXXXX
我正在尝试编写一个正则表达式,通过它我可以用字符串中的十六进制代码替换 rgb 颜色值。字符串可能有以下类型:
=> rgb(0, 0, 0) 0 0 0
=> rgb(0 100, 200)
=> 0 0 rgb(201,45,65)
首先,我想从字符串中访问 rgb 值,然后用十六进制代码替换它。所以结果将是:
=> #XXXXXX 0 0 0
=> #XXXXXX
=> 0 0 #XXXXXX
var newstr = Regex.Replace(
input,
@"rgb\([ ]*(\d+)[ ]*,[ ]*(\d+)[ ]*,[ ]*(\d+)[ ]*\)",
m => {
return "#" + Int32.Parse(m.Groups[1].Value).ToString("X2") +
Int32.Parse(m.Groups[2].Value).ToString("X2") +
Int32.Parse(m.Groups[3].Value).ToString("X2");
}
);
要从您的字符串中获取值,您可以根据 and 的索引创建一个子字符串"rbg("
,")"
然后在" "
and/or上进行后续拆分","
。然后...
看这里:
http://bytes.com/topic/c-sharp/answers/268611-convert-rgb-hexadecimal
public static string ToHtml ( System.Drawing.Color color )
{
if (System.Drawing.Color.Transparent == color)
return "Transparent";
return string.Concat("#", (color.ToArgb() & 0x00FFFFFF).ToString("X6"));
}
或者:
System.Drawing.Color color = System.Drawing.Color.FromArgb(longRgb);
怎么样
string str = "rgb(0 100, 200)";
int startindex = str.IndexOf("rgb(");
int endindex = str.LastIndexOf(')');
string result = str.Substring(0, startindex)
+ "#XXXXXX"
+ str.Substring(endindex + 1);
尝试了您提供的所有 3 个选项。