C# 簡易Tips - 文字列/ファイルパス編 -
はじめに
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"
おわりに
これも使うなーって思ったらその都度追記していきます。