C#樹林– category –
プログラミング言語のC#を勉強したときのノートです。
-
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" が含まれているか、ユーザー入力に禁... -
C#樹林
【C#】文字列のnull/空判定:IsNullOrEmptyとIsNullOrWhiteSpaceの正しい使い分け
文字列の「空」判定の重要性 アプリケーション、特にユーザー入力や外部APIからのデータを受け取る際、string(文字列)変数が意図しない値(nullや空文字列)になっているケースは頻繁に発生します。 nullの変数に対して.Lengthや.Split()などのメソッド... -
C#樹林
【C#】文字列の桁揃え:指定した幅(桁数)で数値を右寄せ・左寄せする方法
書式設定と「桁揃え(アラインメント)」 C#では、ToString()メソッドや文字列補間($)を使い、{value:N0}(カンマ区切り)や{value:F2}(小数点以下2桁)のように、数値の「書式(Format)」を指定できます。 しかし、コンソール出力やテキストレポート... -
C#樹林
【C#】数値の書式指定:ToStringで桁数、カンマ、0埋めを制御する方法
数値の書式設定(フォーマット) C#で数値をToString()メソッドを使って文字列に変換する際、単に値を文字列にするだけでなく、「000123のように0で桁を埋めたい」や「1,234,567のように3桁区切りのカンマを付けたい」、「小数点以下3桁まで表示したい」と... -
C#樹林
【C#】数値を文字列に変換する:ToStringメソッドの基本と書式指定
数値から文字列への変換 C#でint、double、decimalなどの数値型データを、ログファイルに出力したり、画面のUIに表示したり、ファイルに書き込んだりする場合、それらの数値をstring(文字列)型に変換する必要があります。 C#では、すべての型(object)... -
C#樹林
【C#】文字列を数値に変換する:Parse, TryParse, NumberStyles の使い方
文字列から数値への変換 アプリケーションを開発する際、ユーザーが入力したテキストボックスの値、ファイルから読み込んだデータ、APIから受信したJSONの文字列など、プログラムが受け取るデータの多くはstring(文字列)型です。 これらの文字列(例: "1... -
C#樹林
【C#】ビット演算:特定のNビット目がON(1)かOFF(0)かを判定する方法
ビットフラグの状態判定 C#でビット演算を用いて複数の状態(フラグ)を一つの数値変数で管理する際、「特定のビットをON/OFFする」操作と並んで重要なのが、「特定のビットが現在ON(1)なのか、OFF(0)なのかを判定する」操作です。 例えば、「読み取り... -
C#樹林
C# ビット演算の応用:特定のビット(フラグ)をON/OFFする方法
ビット演算と「フラグ管理」 ビット演算は、数値を2進数のビット列として直接操作する技術です。この技術の強力な応用例の一つに「フラグ管理」があります。 フラグ管理とは、intやbyteなどの一つの数値型変数の各ビット(0または1)を、それぞれ独立した... -
C#樹林
【C#】 ビット演算子ガイド:&, |, ^, ~, <<, >> の基本と使い方
ビット演算とは C#における演算子には、+や-といった算術演算子、&&や||といった論理演算子(bool値に作用)があります。それらとは別に、数値を2進数のビット(0と1)の並びとして直接操作するための演算子群があり、これらを「ビット演算子」と... -
C#樹林
C#での乱数生成:Randomクラスと暗号学的なRandomNumberGeneratorの使い分け
C#における乱数生成の必要性 プログラムにおいて「ランダムな値」が必要になる場面は数多くあります。ゲーム開発におけるアイテムのドロップ率、シミュレーションにおけるランダムなイベントの発生、あるいはテストデータの自動生成など、予測不可能な要素...