2

私はいくつかの 16 進値を持つ文字列を持っています。例:

<font color=**"&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699">Hi How ARE YOU</font>

上記の文字列をデータベースに保存したい。この文字列で、16 進数の値が見つかりました。保存中に16進数を文字列に変換したい。C#.net に解決策はありますか。

4

1 に答える 1

0

16 進数を解析するには、次のようにします。

var hex = "0xFFFFFF";
uint color;

if(uint.TryParse(hex, NumberStyles.HexNumber, CultureInfo.CurrentCulture, out color))
{
    //Parsing ok
}else{
    color = 0; //Parsing failed
}

上記の文字列がわからないので、そこから 16 進数を抽出する方法がわかりません。


編集#1:

私が理解しているように、この文字列を解析したい

<font color=**"&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699">Hi How ARE YOU</font>

そしてその文字列を生成します

<font color=0x0987AF>Hi How ARE YOU</font>

カラーコードの作成方法がわからないため、解析できません。

正規言語に埋め込まれている場合、正規表現を使用して重要な平和をまとめてそれらの結果を解析できます。それが HTML または類似のものである場合、正規表現を使用することはできず、代わりに文字ごとに反復処理する必要があります。その場合は、StringBuilder を使用してコードを高速に保ちます。

すべてのストリングピースをまとめたら、それらを個別に解析し、色を計算してString.Format(""{0:X06}"", color)から、再度 16 進数として出力するために使用できます。


編集#2:

その色の文字列のエンコーディングがわからないので、それをどのように解析するかについては大まかな見積もりしかできません。

その文字列の最後の数字は色で、それ以外はすべて単なるノイズだと思います。したがって、この

<font color=**"&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699">Hi How ARE YOU</font>

これに変身するべき

<font color="&336699">Hi How ARE YOU</font>

色の文字列を分離する最初の部分は示していませんが、 html で正規表現を使用しないでください。むしろ、数式の場合のように、1 文字ずつ調べてください。

 String examplestring = @"color=**""&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699""";
 Console.WriteLine(examplestring);
 String lastsixnumbers = examplestring.Substring(examplestring.Length - 7, 6);
 Console.WriteLine(lastsixnumbers);
 String final = String.Format("color=\"#{0}\"", lastsixnumbers);
 Console.WriteLine(final);
 Console.ReadKey();

これは役に立ちましたか?そうでない場合は、カラーコードの理解が間違っている可能性があります-カラーコードを使用して実際に一致する結果を提供するか、色がどのようにエンコードされているかについての知識を提供してください。

于 2012-09-14T09:02:08.617 に答える