C#。ネット型の変換(転載)

より転載: http://www.ynws.gov.cn/wsrs/blog/blogview.asp?logID=99

REVIEWの記事は、関与するC#の型変換に説明することであるC#の梱包/開梱/ ASCII文字およびUnicodeコード、文字列と数値、文字列と文字列/バイト配列、数値バイト配列の様々なタイプ間の遷移との間の移行の間の数値型との間のエイリアス変換、変換16進数、および日付データ型のいくつかの変換プロセス。 
 
 

1.梱包、開梱または別名

多くの書籍のC#.NETを導入しているint型- >のInt32梱包はプロセスであり、その逆はプロセスを開梱されます。以下のような変数の他の多くの種類の、あまりにも、短< - > Int16型、長い < - > Int64型などがあります。平均プログラマ、このプロセスを理解する必要はありません、ためにこれらのアクションのボクシングとアンボクシングがすべて自動的に行うことができますので、介入するためのコードを記述する必要はありません。しかし、我々は、これらのタイプの間の関係ということを覚えておく必要があるので、我々は彼らとメモリの間の関係に「エイリアス」を使用します。

それは集団訴訟にパッケージパッキンデフォルトでは、単純なデータ型です- C#がオブジェクト指向のJava以外は完全にもしている、完全にオブジェクト言語です。INT32、Int16型、Int64型およびその対応するクラス名であり、私たちはよく知っているものは、そのようなint型、短い、長い、などのような名前を、覚えやすい、我々はのInt32、Int16型、Int64のエイリアス、他の種類のそれを呼び出すことができます。そして、これらの3種類に加えて、「エイリアス」のどのような意味ですか?一般的に使用されるいくつかは次のとおりです。

BOOL - >可能System.Boolean(trueまたはfalseのいずれかのブール値、)

CHAR - >のSystem.Char(文字はUnicode文字を表す2つのバイトを占有します)

バイト- > System.Byte(バイト、1バイト、8は正の整数を表し、0〜255の範囲)

sbyte - > System.SByte(符号付きバイト、1バイト、8ビット整数、 〜レンジ127 -128)

USHORT - > System.UInt16(符号なしshort、2バイト、16は正の整数であり、65,535〜0)の範囲表す

単語4を表す可能System.UInt32(符号無し整数> - UINTを部、32は正の整数、範囲0〜4,294,967,295)である

ULONG - > System.UInt64(unsigned long型、8バイト、64は正の整数、約20パワー0〜10の範囲)を表す

ショート- >をSystem.Int16(短整数、2バイト、整数の16ビット〜32,767 -32,768の範囲)

INT - >可能System.Int32(4つのバイトを表す整数、32ビット整数、2,147,483,647の範囲2,147,483,648)

長い- > System.Int64(64ビット整数、程度の範囲で表される長、8バイト、 - (19 10)10番目から19番目)の

フロート- > System.Single(単精度浮動小数点、4バイト)

二重- > System.Doubleザ(倍精度浮動小数点、8バイト)

、我々は、次の世代を使用することができ 実験を行います:

プライベート無効testaliasを(){
    // this.textBox1是一个文本框、类型为System.Windows.Forms.TextBox
    //设计中已经将其複数行属性设置为真の
    バイトa = 1; チャーB = 'A'; 短いC = 1。
    int型のD = 2; 長いE = 3; UINT F = 4。ブールG = TRUE。
    this.textBox1.Text = "";
    this.textBox1.AppendText( "バイト- >" + a.GetType()フルネーム+ "\ n"は。);
    this.textBox1.AppendText( "CHAR - >" + b.GetType()フルネーム+ "\ n");
    this.textBox1.AppendText( "短い- >" + c.GetType()フルネーム+ "\ n");
    this.textBox1.AppendText( "int型- >" + d.GetType()フルネーム+ "\ n"は。);
    this.textBox1.AppendText( "長い- >" + e.GetType()フルネーム+ "\ n"は。);

    this.textBox1.AppendText( "BOOL - >" + g.GetType()フルネーム+ "\ N-。");
}フォームに新しいボタンを作成し、そのクリックイベント()関数内でTestAliasを呼び出し、次のように我々は結果が表示されます。

バイト- > System.Byte

CHAR - >のSystem.Char

ショート- >のSystem.Int16

int型- >可能System.Int32

ロング- > System.Int64

のuint - >可能System.UInt32

BOOL - >可能System.Boolean

これは別名にそれぞれ対応するクラスを示して!

2.数値型間の変換

ここでは、数値型バイト、ショート、整数、長い含む FLOAD、二重等を、自動的に、値の様々なタイプの順序に従って順次に逆変換することができます。例えば、int型の変数に割り当てられたデータの種類に短い、短い値が自動的にINT行、INTを入力し、変数を割り当てるために変換されます。次の例で:

プライベートボイドTestBasic(){
    バイト= A. 1; B = Aショート; C int型= B;
    ロングD = C; E = Dフロート、ダブルF = E;
    this.textBox1.Text = "";
    this.textBox1.AppendText( "バイト=" + a.ToString()+ "\ N-");
    this.textBox1.AppendText( "ショートB =" b.ToString +()+ "\ N-");
    この。 textBox1.AppendText( "C = INT" + c.ToString()+ "\ N-");
    this.textBox1.AppendText( "ロングD =" d.ToString +()+ "\ N-");
    this.textBox1。 appendText(e.toString +( "Eは、フロート=")+ "\ N-");
    ; this.textBox1.AppendText(f.ToString +()+ "\ N-" "ダブルF =")
ランニング渡さ}翻訳、結果変数の値が1であるである。もちろん、これらは、型または型...... System.Byte System.Doubleタイプです。今度は、割り当ての順序は、順番に、何が起こるのだろう場合は、試してみましょうか?次の文の()関数TestBasic添加される:

。INTを1 = G;

ショートG = H;

this.textBox1.AppendText( "H =" h.ToString +()+ "\ N-")。





前記のForm1.cs線118、即ち、短い時間= G行。

今回は、私たちが変換されることに固執するならば、あなたは多くの場合、C言語に記載されているキャストを、使用する必要があり、使用することです「(型名)変数名」のデータにキャストされる文の形。次のように修飾された上記の例:

。ショート1 G =;

バイトH =(バイト)G; // Gタイプショートキャストの値を入力すると、変数短いHに

this.textBox1.AppendText(「H =」Hの+ ()+ "\ n" .ToString );

コンパイラ、演算結果出力h = 1、変換が正常に行われました。

私たちは、キャストを使用している場合しかし、それはもはや問題と考えられていないことがあります。変数gサイズはバイトのタイプと範囲を超えた場合に、バイト型の範囲が、その後、0から255までである一方で、短いタイプの範囲は、-32768から23767までです次に何が起こりますか?私たちは再び255を超える大規模な10、265の値が、コードを書き換える可能性がある

ショートG = 265; // 265 + 10 = 255

バイトH =(バイト)G;

this.textBox1.AppendText( "H =" Hの+。 ToStringメソッド()+ "\ nが" );

結果は、H = 265を実行していない、エラーなしでコンパイルが、H = 9。

私たちは、変換を行うときしたがって、変換されたデータは、ターゲット型の範囲を超えることができないことに留意すべきです。ときに小型バイトにマルチバイト・データ・タイプ(例のように比較的短い)(対照的に、バイトの例のように)でなく、シンボルタイプと符号なし型の間同じバイト数だけでなくバイトに変換されるように、129 sbyteがオーバーフローします。この点で同様の例は、詳細には説明しません。
3. ASCIIコードの文字とUnicodeコード

何度も我々はそれが文字符号化された英語のASCII文字または漢字のUnicodeコード、またはコード関連のクエリを取得する必要があります。多くの人々は、特に転送順序が、それはこのことを行うために、なぜ既製の機能を提供しなかったC#で文句を言うだろうプログラムの人々は、C#を学ぶVBから来た-なぜなら、そのようなのためのVBであっ昇順()関数とはChr()関数変換。

しかし、あなたがCを学んだならば、あなたが知っている、我々はあなたが対応するASCIIコードを取得することができ、適切な数値データに英語の文字データをキャストする必要があります。場合は、逆に数値データへの適切なキャスト文字データは、対応する文字を得ることができます。

文字のC#の範囲だけではない、シングルバイト文字を含むように拡張、それはまたように漢字などの全角文字を含めることができます。キャスト-文字エンコーディングとの間の遷移では、我々はまだC言語の練習を継続して使用することができます。次の例を見てとる

{)(プライベートボイドTestCharを
    ショートII = 65;チャーCH = 'A'
    this.textBox1.Text = "";
    this.textBox1.AppendText( "ASCIIの\「"のコードの+ CH + 「\「は次のとおりです。」
    this.textBox1.AppendText(ii.ToString +()+ "ASCIIはIS" "charがIS:" +(文字)II + "\ N-");
    'で'文字= CN;ショートUC = 22478;
    これ。 ( "\のユニコードの'" + CN + "\' IS:" +(ショート)CN + "\ N-")textBox1.AppendText;
    this.textBox1.AppendText( "ユニコードIS" uc.ToString +()+ "チャーは:「+(CHAR)UC +」\ N- ");
}その動作結果

である『』のASCIIコード:97

ASCIIが65である、charがある:

ユニコードである『で』のの:20013

Unicodeは文字である、22478です:市は、

この例から、我々は非常に明確に理解することができるようになります-キャストすることにより、それが表現を得るために、文字、または文字コードをエンコードすることができます。、あなたが短いタイプのエンコーディングを必要としない場合は、エンコードされた値をint型の他のタイプを取得するために、第1の変換を参照してください。

文字列と数値の間の変換4

まず、我々は徹底的に文字列の値が何であるかを理解する必要があります。私たちは、C#で、二重引用符で文字のペアによって、複数のストリングが「123」のように表現される、ということを知っています 文字の組成は数値文字列であるため、「123」と比較的特異的には、この文字列は、文字列値です。私たちの目には、これはまた数が、コンピュータであるが、それは文字列ではなく、数あるのみという文字の文字列です。したがって、我々はいくつかの点で、そのような文字列値に変換され、入力値として、他の時間に、我々は、その逆も必要。

各クラスは、ボイドのToString()メソッドを持っているため、文字列に値を変換することは、非常に簡単です。すべての数値のボイドのToString()メソッドは、数値データ列に変換することができます。123.ToSting()文字列「123」を取得します

だから、今度は、私たちが何をすべきか、数値に数値文字列に変換?私たちは、あなたが短い、int型、floatと他の数値型は、静的解析()関数を持っているでしょう、近い見てみましょう。この関数は、値を対応する文字列を変換するために使用されます。フロートの例に我々の変換:float.Parse(「543.21 = Fフロート 」); fは結果543.21Fあります。もちろん、値の他のタイプは、同じ方法を変換するために使用することができる、以下の方法がより明確変換の例を示すことができる:

プライベートボイドTestStringValue(){
    フロートF = 54.321F;
    =「123」の文字列STR;
    this.textBox1。 =テキスト"";
    this.textBox1.AppendText( "F =" F +。
    IF(int.Parse(STR)== 123){
        this.textBox1.AppendText( "STR正常intに変換します。");
    }他{
        this.textBox1.AppendText( "失敗INTにSTRの変換を。");
    }
}実行結果:

F = 54.321

。正常intへSTR変換

文字列と文字列5との間の変換

文字列System.Stringクラスは、文字列の配列を変換するために実装することができる空隙ToCharArray()メソッドを提供します。次の例で:

プライベートボイドTestStringChars(){
    文字列STRは= "のMyTest";
    [] = str.ToCharArray文字()をchar型;
    this.textBox1.Text = "";
    this.textBox1.AppendText( "\"のMyTest \」の長さ"str.length + +" \ N- "); IS
    this.textBox1.AppendText("
    this.textBox1.AppendText(「CHAR [2] =」文字+ [2] +「\ N-」);
}文字列とその要素のいずれかの長さは、以下の結果を用いて試験した変換するための変換へ例:

長さ「のMyTest」である。6

文字の長さ。6アレイである

[2] = Tがチャー

見ることができる、結果は成功した変換を示し、完全に正確です。だから、今度は、どのように文字列に文字列を作りますか?

私たちは、この問題を解決するためにSystem.Stringクラスのコンストラクタを使用することができます。System.Stringクラスは2つのコンストラクタを文字列、すなわち文字(CHAR [])と文字列[CHAR []、INT、によって構成されている持っている INT)。理由文字の配列の一部が文字列を構築するため、指定することができるマルチ後者の2つのパラメータ。かつての間に文字列を構築するために、文字の配列のすべての要素を使用することです。我々の例として前者は、()は、次のステートメントの関数は入力TestStringChars:

char型[] = {TCS 'T'、 'E'、 'S'、 'T'、 ''、 'M'、 'E'}。

TSTR =新しい新しい文字列(TCS);

this.textBox1.AppendText( "TSTR = \" "+ TSTR +" \ "\ N-");

入力TSTR =の演算結果""私のテストは、テストが成功した変換を記載しました。

実際には、我々は多くの時間が単なる文字列内の文字を取得するために、文字の配列に文字列を変換する必要があります。変換のみにスケールアップする必要がない、この目的のためならば、我々は自分の目標を達成することができます可能System.String []演算子を使用する必要があります。次の例を考えると、TestStringChars言語名次のように()関数が追加されます:

チャーCH = TSTRと、[3]

this.textBox1.AppendText( "\" "+ TSTR +" \ "=" + CH [3]。 ToStringメソッド());

正しい出力が"私をテスト"である[3] = T、 試験し、正しい出力を。

6.文字列とバイト配列との間の変換は、

あなたがSystem.Stringクラスから文字列とバイト配列との間で変換する方法を見つけたい場合、私はあなたが失望されます怖いです。System.Text.Encoding:この変換を実行するために、我々は別のクラスを使用する必要がありました。このクラスは、文字列のGetString文字列にバイト配列を変換する(バイト[])方法を提供し、バイト配列に文字列を変換するためのBYE [] GetBytesメソッド(文字列)の方法を提供します。

すなわちEncoding.Default(現在のANSIコードページのエンコード方式を取得)、Encoding.ASCIIは(7ビットのASCII文字セットを取得し、System.Text.Encodingクラスのコンストラクタは利用できていないようですが、我々はいくつかのデフォルトのエンコードを見つけることができます、Encoding.Unicode(リトルエンディアン)は、Unicode形式のバイト順を使用して符号化され得る)コーディング、Encoding.UTF7(取得された符号化形式UTF-7)、Encoding.UTF8(取得された符号化形式UTF-8)などが挙げられます。ここでは主に、変換のためのEncoding.DefaultとEncoding.Unicodeの違いについて話をします。

バイト配列変換プロセスに文字列で、Encoding.Defaultは、半値幅が英語などの各シングルバイト文字は、バイトに変換され、このような漢字などの全角文字の各々は、2に変換しましたバイト。そしてEncoding.Unicodeは、彼らが2バイトに変換されます。我々は、単に以下の変換方法を見て、Encoding.DefaultとEncodeing.Unicodeの使用との間の差ができる:

プライベートボイドTestStringBytesを(){
    文字列S =「C#言語」;
    バイト[] B1 = System.Text.Encoding.Default .GetBytes(S);
    バイト[] B2 = System.Text.Encoding.Unicode.GetBytes(S);
    文字列T1 = ""、T2 = "";
    foreachの(バイトB1におけるB){
        b.ToString + = T1( "")+ "";
    }
    foreachの(B2におけるBバイト){
        T2 + = b.ToString( "")+ "";
    }
    this.textBox1.Text = "";
    this.textBox1 .AppendText( "b1.Length =" + b1.Length + "\ N-");
    this.textBox1.AppendText(T1 + "\ N-");
    this.textBox1.AppendText( "b2.Length =" + b2.Length + "\ N-");
    this.textBox1.AppendText(T2 + "\ N-");
}
次のような結果があり、私たちはすでに知っていると信じて、詳細な言っていません。

= 6 b1.Length

67 35 211 239 209 212 

b2.Length = 8

67 0 35 0 0 237 139 138 

文字列のGetStringエンコーディングクラス(バイト[])または文字列のGetString(バイト[]、INT使用して、文字列にバイト配列を変換する 、INT) 符号化エンコード特定の用途によって決定される方法。TestStringBytes()関数で、次のステートメントを例として添加される:

バイト[]のBS = {97、98、99、100、101、102};

文字列= System.Text.Encoding.ASCII.GetString SS(BS)

this.textBox1 .AppendText(「文字列がある:」 + SS +「\ n」);

実行結果:文字列である:ABCDEF

様々なタイプの値とバイトアレイ7との間の変換

部1において、我々が見つかりましたができデータを格納するのに必要なバイト数を使用して様々な数値モデル空間。同様に、バイト配列型に値を変換する必要性は、バイト配列は、ワードの対応する値のタイプよりも大きい必要がある、対応するサイズがバイト配列を得なければならないバイト配列にデータ値のいくつかのタイプを変換しますセクションの数。System.BitConverter:今、このような変換の主人公を紹介します。このクラスは、ToInt32、ToInt16、ToInt64、ToUInt32提供し、バイト配列型に各種の数値を変換するバイト[] GetBytesメソッド(...)メソッドを提供 ToBoolean、ToSignleのような、対応するバイト配列値に変換しますタイプ。

このタイプの変換は、通常は、より微妙な符号化/復号化する必要があるので、ので、ここでは詳述しない動作しているときに、唯一のSystem.BitConverterがあなたに紹介したい使用されます。

8. 16進数に変換しました

コンピュータ内部のデータはすべてバイナリで保存されているので、バンドは、入力と出力で、データの保存とは何の関係もありません。だから、バイナリ変換のために、我々は結果の文字列にのみ関心があります。

(上記のセクション4で述べたのToString)メソッドは、文字列に値を変換するが、文字列で、結果は小数で表示されます。ToStringメソッド(String)メソッドを使用して-今、私たちは、あなたが16進数に変換することができ、いくつかのパラメータを追加するには、それを持って来ます。これは、書式指定子である文字列型のパラメータでなければなりません。進形式指定子は、「X」または「X」、主に指定AF 6つの数字を異なる2つのフォーマットを使用することである:「X」は、代表的なAF小文字を表し、「X」は、AFを表します文字文字を使用しています。次の例で:

プライベートボイドTestHex(){
    int型A = 188;
    = "this.textBox1.Text";
    this.textBox1.AppendText( "A(10)=" + a.ToString()+ "\ N-");
    この.textBox1.AppendText(+ a.ToString( "X")+ "\ N-" "(16)= A");
    this.textBox1.AppendText( "A(16)=" + a.ToString( "X-") + "\ n"は);








長さは、十分に先行ゼロで埋められていない場合は、この時点で、我々は別の需要を持っているかもしれませんが、それは結果を表示きちんとしている、我々は、16進数表現の長さを制御する必要があります。この問題を解決するために、私たちはただの記号「×」または「X」の形式を説明する必要がある行に書かれた数字の長さを示します。例えば、4文字の長さを制限するために、それは「X4」のように記述することができます。さらなる実施形態で:

this.textBox1.AppendText( "(16)=" + a.ToString( "X4")+ "\ N-");

結果出力(16)= 00BC。

今、私たちは、整数にどのように進数の文字列について話しています。この変換は、parse()メソッドによって、同じことを必要とします。ここでは、私は(文字列、System.Globalization.NumberStyles)メソッドを解析する必要があります。最初のパラメータは、「AB」、「20」(10進32)等の進数文字列です。第2のパラメータは、列挙進値HexNumberの列挙型System.Globalization.NumberStylesあります。私たちは、「AB」が整数に変換され、あなたが書く必要がありますしたいのであれば:int型、B = int.Parse(「AB 」、System.Globalization.NumberStyles.HexNumber)、 Bの結果の値は171です。

9。

日付データ型とlongデータ間の変換は、 なぜ日付データは、長整数データにそれを入力する必要がありますか?多くの理由が、個人的に私のために、それは多くの場合、日付のデータベースに使用されますが、保存されています。期限タイプを定義し、操作するための様々なデータベースに言語処理日付データ型の同じ、様々な定義ではありません、私は再びデータベースに保存されて成長整数に日付型データを好むので、また異なっています。あなたはそれらを維持するために文字列を使用するだけでなく、文字列を使用することができますがまた、それは長いデータ空間以上のものを保存する必要があるなどの問題領域、など多くの問題を伴います。

日付データ型、C#の操作に参加時間は、また、長い整数データ操作に変換されなければなりません。これは、間隔のデジタル表現の後に100ナノ秒までの期間の12時1月1日に0001以来の長い値です。この数は、C#の日時におけるマダニ(スケール)と呼ばれます。DateTime型はダニという名前の長整数読み取り専用のプロパティがあり、その値を保持します。したがって、型DataTime長い値から得られたデータは、非常に簡単であり、唯一のようなマダニDataTimeオブジェクトの値を読み取る必要がある:

長いlongDate = DateTime.Now.Ticks;

コンストラクタ日時も対応に設けられました日時構成長いデータ型から機能データ:日時(長いです)。以下のような:

日時theDate =新新のDateTime(longDate);

それは、多くのVB6プログラマーのために、二重の整数に変換し、VB6の日付データ型はダブルの内部表現に基づいているため、問題の外にそれらを与えることですタイプの後に日付のみを取得しますが、時間がありません。日付のこれらの2つのタイプ、それを調整する方法?

可能System.DateTimeダブルToOADate()およびこの問題を解決するための静的日時FromOADate(二重)は、2つの機能を提供します。前者の目標電流値で二重のSystem.DateTimeオブジェクトから得られる値である元の二重出力に記載の方法。たとえば、次のように

プライベートボイドTestDateTimeLong(){
    ダブルdoubleDate DateTime.Now.ToOADate =();
    TheDate = DateTime.FromOADateのDateTime(doubleDate);
    this.textBox1.Text = "";
    this.textBox1.AppendText( "今のDouble値:" doubleDate.ToString +()+ "\ N-");
    this.textBox1.AppendText (「ダブル日時から値」theDate.ToString +()+「\ N-」);
}実行結果:

今重複値:37494.661541713

DateTime値ダブルから:2002年8月26日午後3時52分37秒

10のフォーマット日付データ型

プログラミングの間、それは、もちろん、それは、出力文字列である必要があり、特定の出力形式に応じて、一般的に、日付データ型に必要です。この目的のために、我々は、toString()メソッドののSystem.DateTimeクラスを使用して、書式文字列を割り当てる必要があります。MSDN、System.Globalizationで。




 



 

 週略称の日
 中AbbreviatedDayNamesで定義された
 
DDDD
 曜日の完全な名前が
 でDAYNAMESで定義されている
 
M
 月番号の
 先行ゼロなしで月の桁
 
のMM
 月番号
 桁数ヶ月先行ゼロ持っ
 
MMM
 短縮された月名前が
 AbbreviatedMonthNamesで定義されている
 
MMMM
 月の完全な名前
 MONTHNAMESでは、定義された
 
Y
 世紀なしの年
 の世紀なしの年が10未満である、年間の先行ゼロを有することが示されていない
 
YYの
 世紀なし年
 世紀なしの年未満であります10は、年は先行ゼロで表示され
 
YYYY
 4桁の年エポック含む
  
 
時間
 12時間の時間を
 数時間は先行ゼロありません
 
HHの
 時間を12時間の
 時間数は、先行ゼロがあります
 
H
 24時間時計
 時間は、先行ゼロなしの数
 
HH
 24時間クロック
 数ゼロ時間は、プリアンブル有するであろう
 
Mを
 minの
 桁分ない先行ゼロがない
 
MM
 分
 先行ゼロ有すること桁分
 
S
 秒
 中央値なし先行ゼロ秒数
 
SS
 二
 桁の秒先行ゼロを持って
 

理解を容易にするために、次の手順で試してください:

プライベートボイドTestDateTimeToString(){
    DateTimeの今= DateTime.Nowを、
    文字列の形式、
    この= .textBox1.Text "";
    形式= "MM-DD-YYYY HH:MM:SS";
    this.textBox1.AppendText(フォーマット+ ":" + now.ToString(フォーマット)+ "\ N-");
    形式= "YY年D日Mの日";
    this.textBox1.AppendText(フォーマット+ ":" +今。 ToStringメソッド(フォーマット)+ "の\ n");
}このプログラムの出力は以下となります。

YYYY-MM-DD HH:MM:SS:2002年8月26日夜05時03分04秒

M dの日付のYY日:2002年8 26

このとき、問題が浮上しています、出力されるテキスト情報がフォーマット文字列が含まれている場合はどのように行うには?

フォーマット= ":YYYY、月:MM、日:年DD";

this.textBox1.AppendText(now.ToString(フォーマット)+ "\ N-");

出力:

5 2002年の下で、4on :: 08、 26A2 2ear :26

それは私が望んでいた結果ではないですが、どのようにそれを行うには?方法があります-

フォーマット= "\"年\ ":YYYY、\ '月\':MM、\ 'の日\':DD";

this.textBox1.AppendText(now.ToString(フォーマット)+ "\ N-") ;

参照、操作の結果:

年:2002、月:08日目:26を

見ることができますが、テキストのみのメッセージのようにそれを囲む単一引用符または二重引用符を使用する必要があります。

ます。https://www.cnblogs.com/llbofchina/archive/2006/11/03/549496.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34008805/article/details/94206723