文字列内の RGB カラー値を 16 進コードに置き換えることができる正規表現を作成しようとしています。文字列には次のタイプがあります。
=> rgb(0, 0, 0) 0 0 0
=> rgb(0 100, 200)
=> 0 0 rgb(201,45,65)
まず、文字列から rgb 値にアクセスし、それを 16 進数コードに置き換えます。したがって、結果は次のようになります。
=> #XXXXXX 0 0 0
=> #XXXXXX
=> 0 0 #XXXXXX
文字列内の RGB カラー値を 16 進コードに置き換えることができる正規表現を作成しようとしています。文字列には次のタイプがあります。
=> rgb(0, 0, 0) 0 0 0
=> rgb(0 100, 200)
=> 0 0 rgb(201,45,65)
まず、文字列から rgb 値にアクセスし、それを 16 進数コードに置き換えます。したがって、結果は次のようになります。
=> #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");
}
);
どうですか
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つのオプションすべてを試しました。
文字列から値を取得するには、 のインデックスに基づいて部分文字列を作成してから、 および/または で後続の分割を行うこと"rbg("
ができ")"
ます。それで..." "
","
ここを参照してください:
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);