C# 如何使用正则表达式将字符串中的rgb值替换为十六进制值
我正在尝试编写一个正则表达式,通过它我可以用字符串中的十六进制代码替换rgb颜色值。字符串可能有以下类型:C# 如何使用正则表达式将字符串中的rgb值替换为十六进制值,c#,C#,我正在尝试编写一个正则表达式,通过它我可以用字符串中的十六进制代码替换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 要从字符串中获取值,您可以基于“rbg(和”的索引执行子字符
=> 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
要从字符串中获取值,您可以基于
“rbg(
和”
的索引执行子字符串,然后在“
和/或”、“
上执行后续拆分。然后
请看这里:
或:
怎么样
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个选项
System.Drawing.Color color = System.Drawing.Color.FromArgb(longRgb);
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");
}
);
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);