0

文字列内の 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
4

3 に答える 3

1
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");
                }
            );
于 2012-09-20T09:52:23.503 に答える
0

どうですか

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つのオプションすべてを試しました。

于 2012-09-20T09:55:41.700 に答える
0

文字列から値を取得するには、 のインデックスに基づいて部分文字列を作成してから、 および/または で後続の分割を行うこと"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);
于 2012-09-20T09:46:41.537 に答える