C#樹林– category –
プログラミング言語のC#を勉強したときのノートです。
-
C#樹林
【C#】DateTime.DayOfYearプロパティで年間積算日(通日)を取得する方法
年間積算日(通日)とは C#で日付処理を行う際、特定の日付が「その年の1月1日から数えて何日目か」を知りたい場合があります。この値を「年間積算日(通日)」または「Day of the Year」と呼びます。 例えば、1月1日は「1」日目、2月1日は「32」日目(1月... -
C#樹林
【C#】DateTime.IsLeapYearでうるう年(閏年)を判定する方法
うるう年(閏年)の判定 C#でカレンダー処理や日付計算を行う際、特定の年が「うるう年(閏年)」であるかどうか(2月29日が存在するかどうか)を判定する必要がある場合があります。 うるう年の判定ロジック(4で割り切れる年はうるう年だが、100で割り切... -
C#樹林
【C#】DateTimeの比較:2つの日付の「前後」と「等価」を判定する方法
DateTime(日時)の比較 C#で日付や時刻データを扱う際、2つのDateTimeオブジェクトの「どちらが新しい(未来)か、古い(過去)か」、「完全に同じ日時か」を比較する必要が頻繁に生じます。 例えば、イベントの開始時刻と終了時刻の前後関係を確認したり... -
C#樹林
【C#】DateTime.AddMonths:Nヶ月後・Nヶ月前を計算する方法と月末の注意点
月単位の日付計算 C#で日付を扱う際、「N日後」を計算するAddDaysと同様に、「Nヶ月後」や「Nヶ月前」を計算したい場面は非常に多くあります。例えば、サブスクリプションの更新日(1ヶ月後)や、ローンの支払いスケジュール(6ヶ月前)などを算出する場合... -
C#樹林
【C#】DateTime.AddDaysでN日後・N日前の日付を計算する方法
日付の加算・減算 C#で日付データを扱う際、「特定の基準日からN日後の日付を求めたい」(例: 登録日から30日後の有効期限)や、「N日前の日付を計算したい」(例: 本日から7日前の日付)といった日付計算は非常に一般的な処理です。 DateTime構造体は、こ... -
C#樹林
【C#】DateTime.DayOfWeekプロパティで曜日を判定する方法 (Sunday, Monday…)
DateTimeから曜日を取得する C#で日付データを扱う際、その日付が「何曜日」であるかに基づいて処理を分岐させたいケースは非常に一般的です。例えば、「土曜日または日曜日の場合は週末料金を適用する」や、「月曜日の場合は週次レポートを作成する」とい... -
C#樹林
【C#】DateTimeから年・月・日・時・分・秒を個別に取得するプロパティ一覧
DateTimeオブジェクトと日時要素 C#においてDateTime構造体は、日付(2025年11月13日)と時刻(15時30分45秒)を一つのオブジェクトとして保持しています。 プログラムを開発していると、このDateTimeオブジェクト全体としてではなく、「月だけを取得して... -
C#樹林
【C#】現在の日付・時刻を取得する:DateTime.Now, Today, UtcNowの正しい使い分け
現在日時の取得 C#でアプリケーションを開発する際、ログのタイムスタンプ、データの作成日時、処理の実行時刻など、「現在の日付」や「現在の時刻」を取得する必要がある場面は非常に多くあります。 .NETのSystem名前空間には、日時を扱うための中心的な... -
C#樹林
【C#】カルチャに依存しない文字列比較:StringComparison.Ordinal の重要性
文字列比較の落とし穴:「カルチャ」依存 C#で2つの文字列を比較する際、== 演算子や引数なしの Equals() メソッドを使うのが最も簡単です。 string input = "windows"; string constant = "WINDOWS"; bool isEqual = (input == constant); // false bool ... -
C#樹林
【C#】サロゲートペア・絵文字を正しく扱う:StringInfoで「テキスト要素」を操作する
string.Lengthが「正しくない」時 C#において、string型の.Lengthプロパティは、その文字列に含まれるchar(16ビット文字)の数を返します。また、foreach (char c in str)ループは、char単位で文字を処理します。 ほとんどの英数字や基本的な日本語では、... -
C#樹林
【C#】文字列とbyte配列の相互変換:Encoding (UTF-8) のGetBytes / GetString の使い方
なぜ文字列とbyte配列の変換が必要か? C#において、string型(文字列)は人間が読み書きするためのテキストデータ("Hello"など)を扱います。一方で、ファイルへの保存、ネットワークを通じたデータ送信、API連携、暗号化処理など、コンピュータがデータ... -
C#樹林
【C#】文字列と文字配列(char[])の相互変換:ToCharArrayとnew String
文字列と文字配列(char[]) C#において、string(文字列)型は「不変(Immutable)」です。つまり、一度作成された文字列オブジェクトの"ABC"という中身を、"ADC"のように一部分だけ変更することはできません。 一方で、char[](文字の配列)は「可変(Mu... -
C#樹林
【C#】string.Joinで配列やListの要素を区切り文字で連結する方法
コレクションから単一の文字列へ C#でプログラミングを行う際、string.Splitで文字列を配列に分割する操作とは逆に、配列やList<T>(リスト)など、複数の要素を持つコレクションを、指定した区切り文字(デリミタ)で連結し、一つのstring(文字列... -
C#樹林
【C#】文字列補間と逐語的リテラルの組み合わせ:$@構文でエスケープを無効化
$と@の併用 C#には、文字列を扱う上で非常に強力な2つの機能があります。 文字列補間($): $"Name: {userName}" のように、文字列内に {} を使って変数を直接埋め込む機能。 逐語的リテラル(@): @"C:\Folder" のように、文字列内の \(バックスラッシュ... -
C#樹林
【C#】StringBuilder.Replaceで効率的に文字列を置換する方法
string.Replace とパフォーマンスの課題 C#のstring.Replaceメソッドは、文字列の一部を置換するための簡単で便利な方法です。しかし、C#のstring型は「不変(Immutable)」であるため、Replaceを実行するたびに、内部では新しい文字列オブジェクトが生成... -
C#樹林
【C#】StringBuilder入門:大量の文字列を高速に連結する理由と使い方
+演算子による文字列連結の問題点 C#で文字列を連結する最も簡単な方法は + や += 演算子を使うことです。 string message = "User: "; message += "Admin"; // "User: Admin" この方法は、数回の連結であれば全く問題ありません。しかし、forやforeachと... -
C#樹林
【C#】string.Splitメソッドで文字列を分割する方法とオプション(RemoveEmptyEntries)
文字列の「分割」処理 C#でプログラミングを行う際、string型で受け取った一つの長いデータを、特定の「区切り文字(デリミタ)」に基づいて複数の部分文字列に分割し、配列として扱いたい場面が非常に多くあります。 代表的な例としては、CSV(カンマ区切... -
C#樹林
【C#】PadLeftとPadRight:文字列の桁数を揃える(パディング)方法
文字列の「パディング(桁揃え)」とは C#でコンソール出力やテキストファイル、レポートなどを作成する際、数値を文字列に変換しただけでは、"ID: 1"、"ID: 150"、"ID: 99"のように、文字列の長さがバラバラになってしまい、見た目が揃わず読みにくくなり... -
C#樹林
【C#】文字列を1文字ずつ処理する方法:foreachループの活用
文字列内の各文字へのアクセス C#で文字列を扱う際、文字列全体としてではなく、その文字列を構成する「1文字ずつ」にアクセスして処理を行いたい場合があります。例えば、特定の文字(例: '-')がいくつ含まれているか数えたり、文字列内の数字だけを抽出... -
C#樹林
【C#】文字列を大文字・小文字に変換:ToUpperとToLowerの使い方とカルチャ依存(InvariantCulture)の注意点
文字列のケース(大文字・小文字)変換 C#で文字列を扱う際、データの一貫性を保つために、大文字と小文字を統一したい場面がよくあります。例えば、ユーザー入力された "Yes"、"yes"、"YES" をすべて同じ "yes" として扱ったり、辞書のキーやデータベース... -
C#樹林
【C#】string.Insertメソッドで文字列の指定位置にテキストを挿入する方法
文字列への「挿入」処理 C#で文字列を構築する際、既存の文字列(例: "File.log")の特定の位置(例: . の直前)に、別の文字列(例: "_backup")を差し込みたい場合があります。 +演算子やstring.Format、Substringを組み合わせてこの操作を行うことも可... -
C#樹林
【C#】string.Replaceで文字列を置換する方法(大文字・小文字の区別も解説)
文字列の「置換」処理 C#で文字列データを扱う際、特定の単語や記号を、別のものに一括で置き換えたいというニーズは頻繁に発生します。例えば、ログレベルの変更("DEBUG"を"INFO"に)や、古いAPIのエンドポイント名を新しいものに修正する、あるいは単に... -
C#樹林
【C#】string.Removeメソッドで文字列の一部(指定範囲)を削除する方法
文字列の部分的な削除 C#で文字列を処理していると、「ログからタイムスタンプの部分だけを削除したい」や、「"Data:" というプレフィックス(接頭辞)を取り除きたい」など、文字列の特定の部分だけを削除して、残りの部分を取得したい場合があります。 s... -
C#樹林
【C#】Substringメソッドで文字列の一部を抽出(切り出し)する方法
文字列の部分抽出(Substring) C#で文字列データを扱う際、長い文字列(例: ログデータ、URL、CSVの1行)から、必要な一部分だけを切り出して(抽出して)使用したいケースは非常に多くあります。 例えば、"UserID=1001"という文字列から"1001"の部分だけ... -
C#樹林
【C#】文字列の検索:IndexOfで部分文字列が最初に現れる位置(インデックス)を調べる
文字列内の「位置」を検索する C#で文字列を操作する際、「この文字列にキーワードが含まれているか(Contains)」だけでなく、「そのキーワードがどの位置(インデックス)から始まっているか」を知りたい場合があります。 例えば、"ERROR: 接続がタイム... -
C#樹林
【C#】文字列の空白を除去するTrim, TrimStart, TrimEndの正しい使い方
文字列前後の「空白」問題 ユーザー入力、ファイル読み込み、APIレスポンスなど、外部から取得した文字列データには、意図しない空白文字(スペース、タブ、改行など)が先頭や末尾に含まれていることがよくあります。 例: " Data Received \r\n" これらの... -
C#樹林
【C#】大文字・小文字を区別せずに文字列を比較する方法:EqualsとStringComparison
文字列比較における大文字と小文字の問題 C#において、== 演算子を使用して2つの文字列を比較する場合、デフォルトでは大文字と小文字が厳密に区別されます。 string strA = "File_Data.csv"; string strB = "file_data.csv"; bool areEqual = (strA == st... -
C#樹林
【C#】string.Compareで2つの文字列の特定の部分(先頭N文字)を比較する方法
2つの文字列の部分比較 C#で文字列の先頭が特定のパターンで始まるかを調べるにはStartsWithメソッドが便利です。しかし、「2つの異なる文字列があり、それらの先頭からN文字目までが互いに一致するか」を判定したい場合、StartsWithでは対応が困難です。 ... -
C#樹林
【C#】文字列の前方一致・後方一致を判定:StartsWithとEndsWithの使い方
文字列の「前方一致」と「後方一致」 C#で文字列データを処理する際、「特定の文字列が "https" で始まっているか」や、「ファイル名が ".csv" で終わっているか」といった、文字列の先頭(前方)または末尾(後方)が特定のパターンと一致するかを判定し... -
C#樹林
【C#】文字列の包含チェック:ContainsとIndexOfの使い分け(大文字・小文字の区別)
文字列の「包含」チェック C#で文字列データを扱う際、「ある文章(文字列)の中に、特定のキーワード(部分文字列)が含まれているか」を判定したい場面は非常に多くあります。例えば、エラーログの文字列に "Error" が含まれているか、ユーザー入力に禁...