2012-09-20 2 views
0

rgb 색상 값을 문자열의 16 진수 코드로 바꿀 수있는 정규 표현식을 작성하려고합니다. 문자열의 유형은 다음과 같습니다.정규식을 사용하여 문자열의 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 

답변

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); 
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"); 
       } 
      ); 
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 가지 옵션 모두를 시도해보십시오.

관련 문제