.NETのコアC#パート2-5中級一般的なユーティリティクラス

.NETCore CSHARP中間の記事2-5

このセクションでは、一般的なクラスやメソッドの活用であります

String.Formatの

String.Formatのは、それが文字列が指定された形式で記述されている変換し、その一部にフォーマット文字列クラス、です。

いくつかの定義String.Formatの方法:

  • アイテムのString.Formatの(文字列、オブジェクト)フォーマットインスタンス指定された値をオブジェクトにString交換等価テキストを指定。
  • String.Formatの(文字列、オブジェクト[])指定されたテキスト相当値対応するオブジェクトインスタンス指定された配列形式項目は文字列に置換されます。
  • String.Formatの指定された配列の対応するテキスト文字列値等価オブジェクトインスタンスで指定されたフォーマットを置き換え(するIFormatProviderは、文字列は、[]オブジェクト)。指定されたパラメータ用品カルチャ固有の書式情報。
  • String.Formatの(文字列、オブジェクト、オブジェクト)が指定された2つのオブジェクト・インスタンスのテキスト文字列同等の値で指定されたフォーマットを置き換え。
  • String.Formatの(文字列、オブジェクト、オブジェクト、オブジェクト)は、テキスト文字列等価三つの値指定されたオブジェクトインスタンスで指定されたフォーマットを置き換え。

これは、実際にはString.Formatの文言は、当社の正規表現に多少似ている、非常に抽象的に見えます。我々はいくつかの非常に一般的な使い方について話をしに焦点を当てます。

値の形式

文字 説明 輸出
C 小数点以下の桁数の数字が続き通貨形式、 String.Formatの( "{0:C3}"、2) 例えば、現在の通貨形式の設定を取得、または¥2.000 $ 2.000
D N前方にフィラービット0の数が続く小数、 String.Formatの( "{0:D3}"、2) 002
バツ 進数の出力に対応 String.Formatの( "{0:X000}"、12) C
G 一般的な出力 String.Formatの( "{0:G}"、2) 2
N セミコロンで区切られた数字 String.Formatの( "{0:N}"、250000) 250,000.00
カスタム カスタム出力 String.Formatの( "{0:000.000}"、12.2) 012.200

なお、括弧はプレースホルダで、{0:}最初のパラメータが続く表し、{1}、第二あるプレースホルダとして存在しています。

プレースホルダ

プレースホルダは、2つのタイプがあります。

  • 0プレースホルダゼロ「0」のフォーマットの値はフォーマットのデジタルの位置に表示される場合、この数は、結果の文字列にコピーされます。小数点左端の前に「0」と数値の合計範囲を決定するための最も右側の位置に小数点位置「0」の後に結果の文字列に表示されます。
    「00」というように小数点の前に指定の値がゼロが常に破棄され、最も近い数値に丸められます。

  • デジタルプレースホルダ#:形式でフォーマット「#」の位置の値が数値で表示された場合は、この番号は結果の文字列にコピーされます。それ以外の場合は、結果の文字列は、この位置は任意の値を格納しません。
    「0」場合は有効な数値ではないことに注意してください、この指定子は、「0」は数字の一意の文字列であったとしても、「0」の文字を表示することはありません。「0」「0」の文字が表示されているに表示された有効桁の数字である場合。ゼロが常に破棄される値は、前の最も近い小数点数に丸められるように、「##」フォーマットストリング。

PS:空白のプレースホルダ

string.Format("{0,-50}", theObj);//格式化成50个字符,原字符左对齐,不足则补空格
string.Format("{0,50}", theObj);//格式化成50个字符,原字符右对齐,不足则补空格

例えば、固定地域のカスタムフォーマット文字列は、「DDDD、MMMMのYYYYをDD」。

時刻形式

月 - - 時間をフォーマットすると、我々は一般的に、すべての年の時間を記述し、非常に簡単です日時間:分:秒String.Formatのクラスでは、十分にあり、我々はこれらの言葉は、1999-として、書式文字としての英語の頭文字を記述する取ります私たちはちょうどする必要が、外国人の共通の表現に05/06/99時間を変換する必要があります05-06

"1999-05-06".Format("mm/dd/yy");

非常にシンプル。私たちは、文字の書式設定一般的に述べた時間の詳細な表を含める
|キャラクター|説明|詳細
|: - :|: - :|: - :|
| D |短い日付パターン|現在のプロパティ定義されたカスタムのDateTimeで表さShortDatePatternフォーマット文字列。例えば、固定の地域のカスタムフォーマット文字列の「MM / DD / YYYY」。
| D |ロング日付モード|現在LongDatePattern属性定義によって表されるカスタムDateTime書式文字列。たとえば、 "DDDD、MMMMのYYYYをDD" 。
| F |完全な日付/時刻モード(短時間)|は、長い日付(D)とスペースで区切られた短時間(T)モードの組み合わせを表します。
| F |完全な日付/時刻のパターン(長い)|現在のFullDateTimePatternプロパティで定義されたカスタムDateTime書式文字列を表します。例えば、地域のカスタム書式文字列を固定するための"DDDD、MMMMのYYYYのHHをddは: MM:SS"。
| G |一般的な日付/時刻モード(短時間)|短い日付その組み合わせ(D)とスペースで区切られた短い(T)モードを示しています。
| G |一般的な日付/時間パターン(長)|は、短い日付(D)とスペースで区切られた時間の組み合わせ(T)モードを表しています。
| MまたはM |モードの日|現在MonthDayPattern属性定義によって表されるカスタムDateTime書式文字列。例えば、固定の地域のカスタムフォーマット文字列は、「MMMMはDD」。
| T |ショートモードは|現在ShortTimePatternプロパティで定義されたカスタムDateTime書式文字列を表します。例えば、固定の地域のカスタムフォーマット文字列のための「HH:MM」。
| T | LPモード|現在LongTimePattern属性定義によって表されるカスタムDateTime書式文字列。例えば、固定の地域のカスタムフォーマット文字列「HH:MM:SS」のために。
| Yまたはy |日付モードは|現在YearMonthPatternプロパティで定義されたカスタムDateTime書式文字列を表します。例えば、固定の地域のカスタムフォーマット文字列「YYYY MMMM」のために。

いくつかのカスタムメソッドがありますが、そのような私は前に引用した例として
|キャラクター|説明|詳細
|: - :|: - :|: - :|
| N D |月の日は、1-31からの数として表現されます。| Nは、有効ビット+ N 0よりも小さいの前にある時にはDである
N M | | 12月1からデジタル表現。| N数dは前に時間有効ビットプラス0がN未満である
Nの数y | |で表さ| Nの数yは0が先行する時の最下位ビットであり、具体的には、Yは使用N未満であります2年後に示されました。
| S番目のNは、| 0秒から59までの数として表現。| N未満であるN S番目の上位ビットが前に時間0で加え| Sは、前の分からの経過秒の整数を表し、
NはM番目| | 0から59までの分の数を表します。N個のmビットN 0未満だけ前の時点でアクティブである| |の最後の時間後に完全分は以降分の数を表す
| N H番目| 0から12までの数として表現します。|全カウント真夜中または正午時間ので| N hを有効ビットが前に時間0で加えられるがNより小さい
| N Hは|それは0から24までの数として表されます。|真夜中または正午時間計数であるので| H Nビットがアクティブ時間であるN 0が先行未満で
列挙文字列書式を

書式文字列

文字 説明
Gまたはg 可能な場合は、列挙項目は文字列値、整数値として表示したり、現在のインスタンスが表示されます。定義フラグ属性を列挙が設定され、それぞれの有効なエントリの文字列値されている場合は、一連の各値はカンマで区切られています。Flagsプロパティが設定されていない場合は、無効な値は、デジタルアイテムとして表示されます。
Fまたはf 可能であれば、列挙項目は文字列値として表示されます。値の合計は(提供されないフラグ属性も)完全な列挙として表示され、カンマで区切られた有効な一連のエントリのそれぞれの値の文字列値することができます。値は、列挙によって完全に決定できない場合、値は整数値としてフォーマットされます。
DまたはD 整数値として表示されたフォーム列挙で可能な限り短く表されます。
XまたはX 列挙は、16進数値として表示されます。先行ゼロの長さの値と、必要に応じた値は、8の最小値を確保するために発現されます

日付時刻

日時は、C#の処理時間に大きな殺傷ある中、ToStringメソッドのDateTime、その効率は、他の言語のための時間よりも有意に優れて非常に高く、ここのDateTime型の書き換えのToString()メソッド、我々は簡単に私たちを使用することができますそれをフォーマットするフォーマット文字。

実際には日付と時刻の操作を変換し、文字列のDateTimeについて話を私たち次第、当社のString.Formatの操作であるため、実際には、我々が今日話しているDateTime構造体は、対象ではありません

時間DateTime構造体の形式の文字列に変換するだけで使用する必要があります

DateTime.Parse(str);

私たちは、例えば、計算するいくつかの時間のために、主に時間のTimeSpanクラスを使用して計算され、このセクションでなく、DateTimeの機能で説明します

  • このインスタンスの値にTimeSpanの指定された値を追加します。
  • このインスタンスの値に指定した日数をAddDays。
  • このインスタンスの値に指定した時間数をAddHours。
  • AddMillisecondsはミリ秒単位の指定された数は、この例の値に加算されます。
  • 本例の加算値に指定した分数をAddMinutes。
  • 値は、この例に追加された指定した月数をAddMonths。
  • このインスタンスの値に指定した秒数をAddSeconds。
  • このインスタンスの値に年の指定した数をAddYears。
  • 指定された時間または期間を減算し、このインスタンスから減算します。

    期間

    以下のリストは、のTimeSpan方法の一部を示します

  • 追加:別のTimeSpan値に加算されます。
  • 日数:日数のTimeSpan値計算を返します。
  • 営業時間:値hを計算するTimeSpanを返します。
  • ミリ秒:ミリ秒単位でのTimeSpan値を返します。
  • 分:計算されたTimeSpan値の分を返します。
  • 否定:現在のインスタンスの反対を返します。
  • 秒:秒単位でのTimeSpan値を返します。
  • 減算:TimeSpanの値から1を引きます。
  • ダニは:ダニのTimeSpan値の数を返します。
  • TotalDays:返すのTimeSpan値は日数を示します。
  • TotalHours:時間数がのTimeSpan値を示し返します。
  • TotalMilliseconds:ミリ秒単位のTimeSpan値表現の数を返します。
  • TotalMinutes:分の数がのTimeSpan値を示し返します。
  • TotalSeconds:返すのTimeSpan値は秒数を示します。

StringBuilder

Stringオブジェクトは、使用可能System.Stringクラスのメソッドの一つは、あなたが新しいオブジェクトの新しい領域の割り当てを必要とし、メモリ内の新しい文字列オブジェクトを作成するたびに不変です。あなたが頻繁に文字列オブジェクトを操作する必要がある場合は、その文字列を使用して直接加算および減算は、この時点で効果的なアプローチを要していない、我々は我々のStringBuilderクラスの操作を使用する必要があります。

StringBuilderのヒープを割り当てられているため、サイズを拡張して自由のStringBuilder。

指定された割り当てサイズは、パフォーマンスを向上させることができるときのStringBuilderは、サイズを指定することができます。容量に到達する前に、それは自分自身のためのスペースを再割り当てしません。指定したサイズよりも、現在のサイズを倍にする場合、それ10,15,20。勧告指定したサイズ。

いくつかの一般的に使用される方法

  • 現在のStringBuilderの末尾に追加StringBuilder.Append //情報。
  • StringBuilder.AppendFormat //は、フォーマットされたテキスト文字列渡された書式指定子で置き換えます。
  • 現在のStringBuilderオブジェクト内の指定されたインデックスのStringBuilder.Insert //文字列またはオブジェクト。
  • StringBuilder.Remove //現在のStringBuilderオブジェクトから指定された数の文字を削除します。
  • StringBuilder.Replace //指定されたインデックスで指定された文字を置き換えます。

一つは、同じメモリアドレスを指すであろうと、2つの文字列が同じ内容であれば、その後、彼らは一度だけ作成されますが、C#の場合は、Microsoftの文字列は、最適化の特殊なタイプを持っている、ということは注目に値する、と、C#の比較します3つの方法があります

  • これは、同じ値(比較値)であり、より==スタックであります
  • これは、スタックが(基準アドレス値を比較)と等しい比較値と等しくなります
  • Object.ReferenceEquals(OBJ1、OBJ2)がメモリアドレスの複数が等しくなります

例:

StringBuilder MyStringBuilder = new StringBuilder("Hello   World!",30);  
MyStringBuilder.Insert(6,"test");
MyStringBuilder.Append("test");

あなただけの文字列処理操作の多数の顔に、私たちは、処理速度を向上させるためのStringBuilderを使用することを覚えておく必要があります。

私のポストがあなたを助けている場合、あなたgithub.NETCoreGuideプロジェクトは、私のスター、庭の中間点のブログでの懸念と勧告を助けました。

Githubの

嗶哩嗶哩ホーム

WarrenRyan'sBlog

ブログパーク

おすすめ

転載: www.cnblogs.com/WarrenRyan/p/11407921.html