Web Analytics

こつこつエンジニア

現役アプリ開発者によるIT系特化ブログ

C# 簡易Tips - 文字列/ファイルパス編 -

f:id:madai21:20211007223944j:plain

はじめに

C#(.NET Framework)で割とよく使うコードを残していこうと思います。
今回は文字列制御系とファイルパス系です。
都度更新していこうと思っています。
※注意:マダイの備忘録的な意味合いが濃い記事となっております。

文字列制御系

数値を文字列に変換

string ret;
 
//intを文字列に変換 
int i = 1;
ret = i.ToString();                 // ret = "1"
ret = i.ToString("000");            // ret = "001"
 
//floatを文字列に変換
float f = 1.2345F;
ret = f.ToString();                 // ret = "1.2345"
ret = f.ToString("0.0");            // ret = "1.2"
ret = f.ToString("0.000");          // ret = "1.235"
ret = f.ToString("0.00000");        // ret = "1.23450"
ret = f.ToString("000.#");          // ret = "001.2"
ret = f.ToString("###.#");          // ret = "1.2"
ret = f.ToString("#.###");          // ret = "1.235"
ret = f.ToString("#.#####");        // ret = "1.2345"

文字列を数値に変換

bool ret;
 
//文字列をint型に変換
int reti;
ret = int.TryParse(@"12345", out reti);     // ret = true、reti = 12345
ret = int.TryParse(@"1234A", out reti);     // ret = false、reti = 0
ret = int.TryParse(@"1.2345", out reti);    // ret = false、reti = 0
 
//文字列をfloat型に変換
float retf;
ret = float.TryParse(@"1.2345", out retf);  // ret = true、retf = 1.2345
ret = float.TryParse(@"1.234A", out retf);  // ret = false、retf = 0
ret = float.TryParse(@"12345", out retf);   // ret = true、retf = 12345

文字列サイズ取得

int ret;
string str = "あいうえお12345";
 
//文字列の文字数を取得
ret = str.Length;   // ret = 10
 
//文字列(Shift_JIS)のバイト数を取得
ret = Encoding.GetEncoding("Shift_JIS").GetByteCount(str); // ret = 15(あいうえお=2Byte、12345=1Byte)

GetEncodingで扱える文字コードはここに記載されています。
docs.microsoft.com

文字列検索

int ret;
bool retb;
string str = "1@23@45";
 
//文字列を前方から検索し、該当文字がstrのどの位置にいるのかを取得する
ret = str.IndexOf("1");         // ret = 0
ret = str.IndexOf("@");         // ret = 1
ret = str.IndexOf("5");         // ret = 6
ret = str.IndexOf("A");         // ret = -1
 
//文字列を後方から検索し、該当文字がstrのどの位置にいるのかを取得する
ret = str.LastIndexOf("1");     // ret = 0
ret = str.LastIndexOf("@");     // ret = 4
ret = str.LastIndexOf("5");     // ret = 6
ret = str.LastIndexOf("A");     // ret = -1
 
//文字列に文字が含まれているかどうかをチェックする
retb = str.Contains("@");       //retb = true
retb = str.Contains(":");       //retb = false
 
//文字列に該当文字が含まれているかどうかをチェックする
retb = str.Contains("@");       // retb = true
retb = str.Contains(":");       // retb = false
 
//文字列の先頭に該当文字が含まれているかどうかをチェックする
retb = str.StartsWith("1");     // retb = true
retb = str.StartsWith("1@");    // retb = true
retb = str.StartsWith("@");     // retb = false
 
//文字列の末尾に該当文字が含まれているかどうかをチェックする
retb = str.EndsWith("5");       // retb = true
retb = str.EndsWith("45");      // retb = true
retb = str.EndsWith("@");       // retb = false

文字列抽出

string ret;
string str = "1@23@45";
 
//文字列から指定位置の文字列を切り出し
ret = str.Substring(0, 1);  // ret = "1"
ret = str.Substring(1, 2);  // ret = "@2"
ret = str.Substring(6, 1);  // ret = "5"
ret = str.Substring(7, 0);  // ret = ""
ret = str.Substring(6, 2);  // System.ArgumentOutOfRangeException発生

ファイルパス系

※共通で定義必要です

using System.IO;

ファイル/ディレクトリが存在しているか判断

// ret = true : 存在する、false:存在しない
bool ret = File.Exists(@"C:\test.txt");

ファイルが絶対パス相対パスか判断

bool ret;
 
ret = Path.IsPathRooted(@"C:\test.txt");    // ret =  true:絶対パス
ret = Path.IsPathRooted(@"test.txt");       // ret = false:相対パス
ret = Path.IsPathRooted(@"..\test.txt");    // ret = false:相対パス
ret = Path.IsPathRooted(@".\test.txt");     // ret = false:相対パス
ret = Path.IsPathRooted(@"\test.txt");      // ret =  true:絶対パス

相対パス絶対パスに変換

//カレントディレクトリはC:\usr\testとする
string ret;
 
ret = Path.GetFullPath(@"test.txt");                    // ret = "C:\usr\test\test.txt"
ret = Path.GetFullPath(@".\test.txt");                  // ret = "C:\usr\test\test.txt"
ret = Path.GetFullPath(@"..\test.txt");                 // ret = "C:\usr\test.txt"
ret = Path.GetFullPath(@"C:\usr\test\test.txt");        // ret = "C:\usr\test\test.txt"

ファイルパスから各種情報を取得する

string ret;
 
//ファイルパスからファイル名(拡張子あり)を取得する
ret = Path.GetFileName(@"test.txt");                            // ret = "test.txt"
ret = Path.GetFileName(@".\test.txt");                          // ret = "test.txt"
ret = Path.GetFileName(@"..\test.txt");                         // ret = "test.txt"
ret = Path.GetFileName(@"C:\usr\test.txt");                     // ret = "test.txt"
 
//ファイルパスからファイル名(拡張子なし)を取得する
ret = Path.GetFileNameWithoutExtension(@"test.txt");            // ret = "test"
ret = Path.GetFileNameWithoutExtension(@"test.jpg");            // ret = "test"
ret = Path.GetFileNameWithoutExtension(@"test.hoge.png");       // ret = "test.hoge"
ret = Path.GetFileNameWithoutExtension(@"C:\usr\test.txt");     // ret = "test"
 
//ファイルパスからディレクトリパスを取得する
ret = Path.GetDirectoryName(@"test.txt");                       // ret = ""
ret = Path.GetDirectoryName(@".\test.txt");                     // ret = "."
ret = Path.GetDirectoryName(@"..\test.txt");                    // ret = ".."
ret = Path.GetDirectoryName(@"C:\usr\test.txt");                // ret = "C:\usr"
 
//ファイルパスから拡張子を取得する
ret = Path.GetExtension(@"test.txt");                           // ret = ".txt"
ret = Path.GetExtension(@"test.jpg");                           // ret = ".jpg"
ret = Path.GetExtension(@"test.hoge.png");                      // ret = ".png"
ret = Path.GetExtension(@"C:\usr\test.txt");                    // ret = ".txt"

おわりに

これも使うなーって思ったらその都度追記していきます。