C# 文字列操作
文字列操作に関するサンプルです。
string主要メソッド
メソッド | 説明 | 使用例 |
---|---|---|
Length | 文字数を取得する | string str = "あいう"; str.Length; →3 |
StartsWith(string a) | 指定した文字で始まるかチェックする | string str = "ABCDEF"; str.StartsWith("ABC"); →true |
EndsWith(string a) | 指定した文字で終わるかチェックする | string str = "ABCDEF"; str.EndsWith("XYZ"); →false |
CompareTo(string a); | 文字列の大小比較をする a方が小さい→1 aの方が大きい→-1 同じ→0 | string str = "20141020"; str.CompareTo("20141021"); → -1 |
Equals(string a) | 値が同じかどうか比較する ( == で比較しても同じ) | string str = "abc"; str.Equals("abc"); →true |
ToUpper() | 大文字に変換した値を返す | "abc".ToUpper(); →"ABC" |
ToLower() | 小文字に変換した値を返す | "ABC".ToLower(); →"abc" |
Replace(string a, string b) | 文字列を置換する | string str = "abcabcabc"; str.Replace("a","A"); →"AbcAbcAbc" |
Insert(int i, string a) | 指定した位置iに文字列aを挿入する | string str="あいうえお"; str.Insert(1, "x"); →あxいうえお |
Remove(int i, int j) | 指定した位置iからj文字削除する | string str="あいうえお"; str.Remove(1, 2); →あえお |
Substring(int a) | 指定した位置aから後ろの文字列を取得する | string str="あいうえお"; str.Substring(2); →うえお |
Substring(int a, int b) | 指定した位置aからb文字取得する | string str="あいうえお"; str.Substring(1,2); →いう |
string.Empty | 空文字を取得する | string str = string.Empty; →"" |
string.Concat | 文字列を結合する | string str = string.Concat("A", "B"); →"AB" |
Trim() | 文字列の前後の空白を削除する | string str=" ABC "; str.Trim(); →"ABC" |
TrimStart() | 文字列の前の空白を削除する | string str=" ABC "; str.TrimStart(); →"ABC " |
TrimEnd() | 文字列の後の空白を削除する | string str=" ABC "; str.TrimEnd(); →" ABC" |
ToList() | 文字列をリスト型(List<char>)にする | string str="ABC"; str.ToList(); →'A', 'B', 'C' |
ToArray() | 文字列を配列(char[])にする | string str="ABC"; str.ToArray(); →{'A', 'B', 'C'} |
エスケープシーケンス
主要なエスケープシーケンス一覧です。
表記 | 意味 |
---|---|
\r | CR |
\n | LF |
\r\n | CR+LF(Windowsの改行コード) |
\" | ダブルクオーテーション |
\' | シングルクオーテーション |
\\ | ¥ |
\t | タブ |
\0 | null |
- (例)「"\'hoge'\"」 を文字列指定する場合
-
string str = "\"\\\'hoge\'\\"";
- (例)「"\'hoge'\"」 を@指定で文字列指定する場合
-
string str = @""\'hoge'\"";
※先頭に@マークをつけるとエスケープ処理をしなくてもOKです。
nullや空文字の判定
C#ではnullや空文字を判定するのに便利なメソッドが用意されています。
メソッド | 意味 |
---|---|
IsNullOrEmpty | nullまたは空文字かどうか判定する |
IsNullOrWhiteSpace | nullまたは空文字または空白のみの文字列かどうか判定する |
- 例)nullまたは空文字かどうか判定する
-
bool b = string.IsNullOrEmpty(str);
- 【例】
- "aa" → false null → true ""(空文字) → true " "(半角ブランク) → false " "(全角ブランク) → false
- 例)nullまたは空文字または空白のみの文字列かどうか判定する
-
bool b = string.IsNullOrWhiteSpace(str);
- 【結果】
- "aa" → false null → true ""(空文字) → true " "(半角ブランク) → true " "(全角ブランク) → true
文字列を結合する
string型とstring型を結合するサンプルです。
- 例)Concatメソッドで結合する
-
string str1 = "A"; string str2 = "B"; string str3 = "C"; string str4 = "D"; string strAdd = string.Concat(str1, str2); string strAdd = string.Concat(str1, str2, str3); string strAdd = string.Concat(str1, str2, str3, str4);
- 【結果】
- strAdd1 → "AB" strAdd2 → "ABC" strAdd3 → "ABCD"
※Concatメソッドは、4個までの引数に対応しています。
文字列を高速に結合するにはStringBuilderを利用します。
- 例)StringBuilderで結合する
-
StringBuilder sb = new StringBuilder(); sb.Append("abc"); sb.Append("def"); sb.ToString();
- 【結果】
- "abcdef"
カンマで分割する
カンマ区切りの文字列を分割して配列に変換するサンプルです。
- 例)
-
string str = "東京,大阪,名古屋"; string[] sp = str.Split(',');
- 【結果】
- sp[0] → "東京" sp[1] → "大阪" sp[2] → "名古屋"
※Splitの引数にカンマ以外の文字列を指定すれば、カンマ以外での分割も可能です。
※配列からカンマ区切り文字列を生成したい場合は→配列ページの「配列からカンマ区切りの文字列を生成する」を参照ください。
埋め込み表示
指定した場所に文字列を埋め込んで表示するサンプルです。
- 例)
-
string name = "北海道"; string code = "01"; string str = string.Format("{0}({1})", name, code);
- 【結果】
- str → "北海道(01)"
文字列が含まれるか判定する
指定した文字列が含まれるか判定するサンプルです。
- 例)
-
string str = "ABCDEFG"; bool b1 = str.Contains("CD"); bool b2 = str.Contains("cd");
- 【結果】
- b1 → True b2 → False
n番目の文字を取得する
n番目の文字を取得するサンプルです。
- 例)
-
//2番目の文字を取得する string str = "ABCDE"; char c = str[1];
※インデックス番号は0から始まるので、2番目を指定したい場合は1を指定します。
- 【結果】
- c → 'B'
文字列をバイト配列に変換する
例)文字列 "ABCDE"(Shift-JIS) をバイト配列にする
- 例)
-
string a = "ABCDE"; byte[] b = System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(a);
- 【結果】
- [65][66][67][68][69]
バイト配列を文字列に変換する
- 例)バイト配列 { 65, 66, 67, 68, 69 }(Shift-JIS) を文字列にする
-
byte[] b = { 65, 66, 67, 68, 69 }; string a = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(b);
- 【結果】
- ABCDE
指定した文字をTrimする
- 例)文字列の前後にある'X'と'Y'をTrimする
-
string str = "XYXYXYXYXAAAAAXYXYXYXY"; string res = str.Trim('X', 'Y');
- 【結果】
- res → "AAAAA"
使用環境の改行コードを取得する
- 例)使用環境の改行コードを取得する
-
string str = Environment.NewLine;
クラス名を文字列で取得する
- 例)SampleClassクラスのクラス名を文字列で取得する
-
string str = typeof(SampleClass).Name;
- 【結果】
- str → "SampleClass"
MD5ハッシュ文字列を取得する関数
- 例)引数の文字列をMD5ハッシュ文字列にして返すメソッド
-
using System.Security.Cryptography; using System.Text; public static string GetMD5String(string str) { StringBuilder sb = new StringBuilder(); byte[] strByte = Encoding.GetEncoding("Shift_JIS").GetBytes(str); //Shift-JIS専用です MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); foreach (byte b in md5.ComputeHash(strByte)) { sb.Append(b.ToString("x2")); } return sb.ToString(); }
- 【使用例】
-
string aa = GetMD5String("あいうえお");
- 【結果】
- "ad7cf5ce5313f8b3fc59d626b9aad653"
大文字小文字を区別なく比較する
文字列の大文字・小文字を区別なく比較するサンプルです。
- 例)
-
string str1 = "HOGE"; string str2 = "hoge"; bool b = str1.Equals(str2, StringComparison.OrdinalIgnoreCase);
- 【結果】
- b → true