目次
- 1 エスケープ文字一覧
- 2 逐語的リテラル文字列
- 3 補間文字列
- 4 文字列を改行する
- 5 ダブルクォーテーション「”」を文字列として指定する
- 6 文字列を長さ(文字数)を取得する
- 7 文字列のバイト数を取得する
- 8 文字列を大文字に変換する
- 9 文字列を小文字に変換する
- 10 文字列が空文字列(長さ0)がどうかを調べる
- 11 文字列がNullまたは空文字列(長さ0)かどうかを調べる
- 12 文字列がNullまたはWhiteSpaceかどうかを調べる
- 13 文字列が等しいかどうかを調べる
- 14 文字列内の指定した文字列(部分文字列)の位置を取得する
- 15 文字列内に指定した文字列(部分文字列)が含まれているかどうかを調べる
- 16 文字列の大小を比較する
- 17 文字列を置換する
- 18 文字列を結合(連結)する
- 19 文字列の先頭が指定した文字列(部分文字列)かどうかを調べる
- 20 文字列の末尾が指定した文字列(部分文字列)かどうかを調べる
- 21 空白(半角スペース)または指定した文字で文字列の先頭を埋める
- 22 空白(半角スペース)または指定した文字で文字列の末尾を埋める
- 23 文字列の前後にある特定の文字を削除(除去)する
- 24 文字列の指定した位置にある文字列(部分文字列)を取得する
- 25 文字列の指定した位置に文字列(部分文字列)を挿入する
- 26 文字列の指定した位置にある文字列(部分文字列)を削除(除去)する
- 27 区切り文字を指定してStringのコレクションを結合(連結)する
- 28 指定した区切り文字で文字列を分割する
- 29 文字列を文字(Char)の配列に変換する
- 30 オブジェクトの値を指定した書式で文字列に変換する
エスケープ文字一覧
C#の主なエスケープ文字(エスケープシーケンス)の一覧です。
文字の説明 | エスケープシーケンス | 備考 |
---|---|---|
シングルクォーテーション「’」 | \’ | |
ダブルクォーテーション「”」 | \” | |
バックスラッシュ「\」 | \\ | |
null文字 | ¥0 | |
ベル(警告音) | \a | |
バックスペース | \b | |
フォームフィード | \f | |
改行(ラインフィード) | \n | |
キャリッジリターン | \r | |
改行(キャリッジリターンとラインフィード) | \r\n | |
水平タブ | \t | |
16進表記のUnicode文字 | \u | 「\u」の後に16進数4桁を記述する |
16進表記のUnicode文字 | \U | 「\U」の後に16進数8桁を記述する |
16進表記のASCII文字 | \x | 「\x」の後に16進数1~4桁を記述する |
垂直タブ | \v |
逐語的リテラル文字列
リテラル文字列の前に「@」を置くことで逐語的文字列を扱うことができます。
以下の例ではエスケープが必要な「\」(バックスラッシュ)を逐語的文字列として記述しています。
1 2 |
// 逐語的文字列 string filePath = @"C:\Users\Someone\Documents\"; |
補間文字列
リテラル文字列の前に「$」を置くことで補間文字列を扱うことができます。
補間文字列内では「{」と「}」で囲んだ部分で変数などを参照することができます。
以下の例では文字列の途中に変数str1の文字列を挿入しています。
1 2 3 4 5 |
// 補間文字列 string str1 = "かきくけこ"; string str2 = $"あいうえお{str1}さしすせそ"; Console.WriteLine(str2); // → あいうえおかきくけこさしすせそ |
文字列を改行する
文字列を改行するには、文字列の途中に「\r\n」を挿入します。
1 2 3 4 5 6 7 8 |
// 文字列の途中で改行する // エスケープ文字を指定して改行 string str1 = "あいうえお\r\nかきくけこ"; // 逐語的文字列を指定して改行 string str2 = @"さしすせそ たちつてと なにぬねの"; |
改行文字はEnvironmentクラスのNewLineプロパティで取得することもできます。
1 2 3 4 |
// 文字列の途中で改行する // EnvironmentクラスのNewLineプロパティを使用して改行 string str = "あいうえお" + Environment.NewLine + "かきくけこ"; |
ダブルクォーテーション「”」を文字列として指定する
ダブルクォーテーション「”」を文字列としてに指定するにはエスケープ文字を使います。
1 2 |
// 「"」を文字列として指定 string str = "\"あいうえお\""; |
文字列を長さ(文字数)を取得する
文字列の長さ(文字数)を取得するにはStringクラスのLengthプロパティを使用します。
1 2 3 |
// 文字列の長さを取得 string str = "あいうえお"; int length = str.Length; |
文字列のバイト数を取得する
1 2 3 4 5 6 |
// 文字列のバイト数を取得 string str = "あいうえお"; // Shift-JISエンコーディングを取得 Encoding sjisEncoding = Encoding.GetEncoding("Shift_JIS"); // EncodingクラスのGetByteCountメソッドでバイト数を取得 int num = sjisEncoding.GetByteCount(str); |
Encodingクラスを使用するにはSystem.Text名前空間のusingが必要です。
文字列を大文字に変換する
文字列を大文字に変換するにはStringクラスのToUpperメソッドを使用します。
1 2 3 4 5 |
// 大文字に変換 string str1 = "abc"; string str2 = str1.ToUpper(); Console.WriteLine(str2); // → ABC |
文字列を小文字に変換する
文字列を大文字に変換するにはStringクラスのToLowerメソッドを使用します。
1 2 3 4 5 |
// 小文字に変換 string str1 = "ABC"; string str2 = str1.ToLower(); Console.WriteLine(str2); // → abc |
文字列が空文字列(長さ0)がどうかを調べる
文字列が空文字列がどうかを調べる方法はいくつかあります。
「==」演算子を使用して「””」と比較する方法、StringクラスのEmpty静的フィールドと比較する方法、StringクラスのEqualsメソッドで「””」やStringクラスのEmpty静的フィールドと比較する方法、文字列の長さが0であるかどうかを比較する方法などが考えられます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
-- 文字列が空文字列がどうかを調べる string str = ""; // ==演算子で""と比較する if (str == "") { // 空文字列の場合の処理... } // ==演算子でstring.Emptyと比較する if (str == string.Empty) { // 空文字列の場合の処理... } // StringクラスのEqualsメソッドで""と比較 if (str.Equals("")) { // 空文字列の場合の処理... } // StringクラスのEqualsメソッドでString.Emptyと比較 if (str.Equals(string.Empty)) { // 空文字列の場合の処理... } // 文字列の長さ0かどうかで比較 if (str.Length == 0) { // 空文字列の場合の処理... } |
文字列がNullまたは空文字列(長さ0)かどうかを調べる
文字列がNullまたは空文字列(長さ0)かどうかを調べるにはStringクラスのIsNullOrEmptyメソッドを使用します。
1 2 3 4 5 6 |
// Nullまたは空文字列かどうかを調べる string str = ""; if (string.IsNullOrEmpty(str)) { // Nullまたは空文字列の場合の処理... } |
文字列がNullまたはWhiteSpaceかどうかを調べる
1 2 3 4 5 6 |
// NullまたはWhiteSpaceかどうかを調べる string str = " "; if (string.IsNullOrWhiteSpace(str)) { // NullまたはWhiteSpaceの場合の処理... } |
WhiteSpaceには半角スペース、全角スペース、改行文字、水平タブ文字などが含まれます。
文字列が等しいかどうかを調べる
2つの文字列が等しいかどうかは「==」演算子で比較方法、StringクラスのEqualsメソッドで比較する方法があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 2つの文字列が等しいかどうかを調べる string str1 = "文字列"; string str2 = "文字列"; // ==演算子で比較 if (str1 == str2) { // 文字列が等しい場合の処理... } // StringクラスのEqualsメソッドで比較 if (str1.Equals(str2)) { // 文字列が等しい場合の処理... } // StringクラスのEquals静的メソッドで比較 if (string.Equals(str1, str2)) { // 文字列が等しい場合の処理... } |
大文字と小文字を区別しないで等しいかどうかを調べる場合は、StringクラスのEqualsメソッドの引数にStringComparison列挙型のOrdinalIgnoreCaseを指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 2つの文字列が等しいかどうかを調べる string str1 = "AbcDEfg"; string str2 = "abCdEfG"; // StringクラスのEqualsメソッドで比較 if (str1.Equals(str2, StringComparison.OrdinalIgnoreCase)) { // 文字列が等しい場合の処理... } // StringクラスのEquals静的メソッドで比較 if (string.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)) { // 文字列が等しい場合の処理... } |
StringComparison 列挙型には以下のメンバがあります。
名前 値 説明 CurrentCulture 0 カルチャに依存した並べ替え規則と、現在のカルチャを使用して、文字列を比較します。 CurrentCultureIgnoreCase 1 カルチャに依存した並べ替え規則と、現在のカルチャを使用し、比較対象の文字列の大文字と小文字の区別を無視して、文字列を比較します。 InvariantCulture 2 カルチャに依存した並べ替え規則と、インバリアント カルチャを使用して、文字列を比較します。 InvariantCultureIgnoreCase 3 カルチャに依存した並べ替え規則と、インバリアント カルチャを使用し、比較対象の文字列の大文字と小文字の区別を無視して、文字列を比較します。 Ordinal 4 序数 (バイナリ) の並べ替え規則を使用して文字列を比較します。 OrdinalIgnoreCase 5 序数 (バイナリ) の並べ替え規則を使用し、比較対象の文字列の大文字と小文字の区別を無視して、文字列を比較します。
大文字と小文字を区別せずに比較する方法では、比較する2つの文字列を一旦大文字または小文字に変換した上で「==」演算子で比較する方法も考えられます。
1 2 3 4 5 6 7 |
-- 一旦小文字に変換して比較 str1 = str1.ToLower(); str2 = str2.ToLower(); if (str1 == str2) { // 文字列が等しい場合の処理... } |
文字列内の指定した文字列(部分文字列)の位置を取得する
文字列内の指定した文字列(部分文字列)の位置を取得するにはStringクラスのIndexOfメソッドを使用します。
1 2 3 4 5 6 |
// 文字列の最初に見つかった位置を取得 string str1 = "abc_def_abc_def"; string str2 = "def"; int index = str1.IndexOf(str2); Console.WriteLine(index); // → 4 |
IndexOfメソッドは文字列の先頭から最初に見つかった位置を取得しますが、文字列の末尾から最初(最後)に見つかった位置を取得する場合はStringクラスのLastIndexOfメソッドを使用します。
1 2 3 4 5 6 |
// 文字列の最後に見つかった位置を取得 string str1 = "abc_def_abc_def"; string str2 = "def"; int index = str1.LastIndexOf(str2); Console.WriteLine(index); // → 12 |
文字列内に指定した文字列(部分文字列)が含まれているかどうかを調べる
文字列内に指定した文字列(部分文字列)が含まれているかどうかを取得するにはStringクラスのContainsメソッドを使用します。
1 2 3 4 5 6 |
// 文字列が含まれているかどうかを調べる string str1 = "abc123def456ghi789"; string str2 = "6g"; bool contains = str1.Contains(str2); Console.WriteLine(contains); // → true |
文字列の大小を比較する
2つの文字列の大小を比較するにはStringクラスのCompareToメソッド、またはStringクラスのCompare静的メソッドを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// 文字列の大小を比較する string str1 = "あいうえお"; string str2 = "かきくけこ"; // StringクラスのCompareToメソッドで比較 int compare1 = str1.CompareTo(str2); Console.WriteLine(compare1); // → -1 str1 = "かきくけこ"; str2 = "あいうえお"; // StringクラスのCompare静的メソッドで比較 int compare2 = string.Compare(str1, str2); Console.WriteLine(compare2); // → 1 str1 = "あいうえお"; str2 = "あいうえお"; // StringクラスのCompare静的メソッドで比較 int compare3 = string.Compare(str1, str2); Console.WriteLine(compare3); // → 0 |
StringクラスのCompareToメソッドおよびCompare静的メソッドは、先の文字列(上記の例ではstr1)の方が小さければ-1を返します。後の文字列(上記の例ではstr2)が小さければ1(先の文字列が大きければ1)を返します。比較する文字列が同じ場合は0を返します。
文字列を置換する
文字列を置換するにはStringクラスのReplaceメソッドを使用します。
1 2 3 4 5 |
// 文字列を置換 string str1 = "僕のお父さんは優しい"; string str2 = str1.Replace("お父さん", "お母さん"); Console.WriteLine(str2); // → 僕のお母さんは優しい |
文字列を結合(連結)する
文字列を結合(連結)するには「+」演算子を使う方法や、StringクラスのConcat静的メソッドを使う方法が考えられます。
1 2 3 4 5 6 7 8 9 10 |
// 文字列を結合 // +演算子で結合 string str1 = "あいうえお" + "かきくけこ" + "さしすせそ"; Console.WriteLine(str1); // StringクラスのConcat静的メソッドで結合 string str2 = string.Concat("たちつてと", "なにぬねの", "はひふへほ"); Console.WriteLine(str2); // → たちつてとなにぬねのはひふへほ |
文字列の先頭が指定した文字列(部分文字列)かどうかを調べる
文字列の先頭が指定した文字列かどうかを調べるにはStringクラスのStartsWithメソッドを使用します。
1 2 3 4 5 |
// 先頭が指定した文字列かどうかを調べる string str = "ABC...XYZ"; bool with = str.StartsWith("ABC"); Console.WriteLine(with); // → true |
StartsWithメソッドは第2引数にStringComparison列挙型のOrdinalIgnoreCaseを指定することで、大文字と小文字を区別せずに照合することができます。
文字列の末尾が指定した文字列(部分文字列)かどうかを調べる
文字列の先頭が指定した文字列かどうかを調べるにはStringクラスのEndsWithメソッドを使用します。
1 2 3 4 5 |
// 末尾が指定した文字列かどうかを調べる string str = "ABC...XYZ"; bool with = str.EndsWith("XYZ"); Console.WriteLine(with); // → true |
EndsWithメソッドは第2引数にStringComparison列挙型のOrdinalIgnoreCaseを指定することで、大文字と小文字を区別せずに照合することができます。
空白(半角スペース)または指定した文字で文字列の先頭を埋める
空白(半角スペース)または指定した文字で文字列の先頭(左)を埋めるにはStringクラスのPadLeftメソッドを使用します。
PadLeftメソッドは指定した文字数に達するまで半角スペースまたは指定した文字を埋め込みます。
1 2 3 4 5 |
// 先頭を「0」で埋める string str1 = "123"; string str2 = str1.PadLeft(6, '0'); Console.WriteLine(str2); // → 000123 |
PadLeftメソッドは引数に文字数のみが指定された場合に半角スペースを使用して文字を埋め込みます。
1 2 3 4 5 |
// 先頭を空白で埋める string str1 = "123"; string str2 = str1.PadRight(6); Console.WriteLine(str2); // → 123 |
空白(半角スペース)または指定した文字で文字列の末尾を埋める
空白(半角スペース)または指定した文字で文字列の末尾(右)を埋めるにはStringクラスのPadRightメソッドを使用します。
PadRightメソッドは指定した文字数に達するまで半角スペースまたは指定した文字を埋め込みます。
1 2 3 4 5 |
// 末尾を「.」で埋める string str1 = "xyz"; string str2 = str1.PadRight(6, '.'); Console.WriteLine(str2); // → xyz... |
PadRightメソッドは引数に文字数のみが指定された場合に半角スペースを使用して文字を埋め込みます。
1 2 3 4 5 |
// 末尾を空白で埋める string str1 = "xyz"; string str2 = str1.PadRight(6); Console.WriteLine(str2); // → xyz |
文字列の前後にある特定の文字を削除(除去)する
文字列の前後にある特定の文字を削除(除去)するにはStringクラスのTrimメソッドを使用します。前にある文字列のみを削除する場合はStringクラスのTrimStartメソッドを使用します。後にある文字列のみを削除する場合はStringクラスのTrimEndメソッドを使用します。
1 2 3 4 5 6 7 8 9 10 11 |
// 前後をトリミング string str = " \t abc\r\n "; string trim = str.Trim(); Console.WriteLine(trim); // → abc string trimStart = str.TrimStart(); Console.WriteLine(trimStart); // → abc\r\n string trimEnd = str.TrimEnd(); Console.WriteLine(trimEnd); // → abc\r\n |
Trimメソッド、TrimStartメソッド、TrimEndメソッドの各メソッドは削除する文字を指定して実行することもできます。
1 2 3 4 5 6 7 8 9 10 11 |
// 文字を指定して前後をトリミング string str = " \t abc\r\n "; string trim = str.Trim(' ', '\t', ' ', '\r', '\n'); Console.WriteLine(trim); // → abc string trimStart = str.TrimStart(' ', '\t', ' ', '\r', '\n'); Console.WriteLine(trimStart); // → abc\r\n string trimEnd = str.TrimEnd(' ', '\t', ' ', '\r', '\n'); Console.WriteLine(trimEnd); // → abc\r\n |
文字列の指定した位置にある文字列(部分文字列)を取得する
文字列の指定した位置にある文字列(部分文字列)を取得するにはStringクラスのSubstringメソッドを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 |
// 指定した位置にある文字列を取得 string str = "1234567890"; // 2文字目から4文字を取得 string str1 = str.Substring(1, 4); Console.WriteLine(str1); // → 2345 // 7文字目から最後まで取得 string str2 = str.Substring(6); Console.WriteLine(str2); // → 7890 |
文字列の指定した位置に文字列(部分文字列)を挿入する
文字列の指定した位置に文字列(部分文字列)を挿入するにはStringクラスのInsertメソッドを使用します。
1 2 3 4 5 |
// 指定した位置に文字列を挿入 string str1 = "あいうえきくけこ"; string str2 = str1.Insert(4, "おか"); Console.WriteLine(str2); // → あいうえおかきくけこ |
文字列の指定した位置にある文字列(部分文字列)を削除(除去)する
文字列の指定した位置にある文字列(部分文字列)を削除(除去)するにはStringクラスのRemoveメソッドを使用します。
1 2 3 4 5 |
// 指定した位置にある文字列を削除 string str1 = "abcdefghijklmn"; string str2 = str1.Remove(3, 6); Console.WriteLine(str2); // → abcjklmn |
区切り文字を指定してStringのコレクションを結合(連結)する
Stringの配列やリスト(List<String>)などのStringのコレクションの要素(メンバー)を結合(連結)するにはStringクラスのJoin静的メソッドを使用します。
Joinメソッドでは文字列を結合する際に使用する区切り文字を指定して結合(連結)することができます。
1 2 3 4 5 6 7 8 9 10 |
// 区切り文字に「,」を指定して文字列の配列を連結する string[] strings = new string[] { "aaa", "bbb", "ccc" }; string str = string.Join(",", strings); Console.WriteLine(str); // → aaa,bbb,ccc |
区切り文字を空文字列にすることで、Stringのコレクションの要素(メンバー)を単純に結合(連結)することができます。
1 2 3 4 5 6 7 8 9 10 11 |
// // 区切り文字に空文字列を指定して文字列の配列を連結する string[] strings = new string[] { "aaa", "bbb", "ccc" }; string str = string.Join("", strings); Console.WriteLine(str); // → aaabbbccc |
指定した区切り文字で文字列を分割する
指定した区切り文字で文字列を分割するにはStringクラスのSplitメソッドを使用します。
Splitメソッドは分割した文字列を要素(メンバー)に持つStringの配列を返します。
1 2 3 4 5 6 7 8 9 |
// 文字列を「,」で分割する string str = "abc,def,ghi"; string[] strings = str.Split(','); Console.WriteLine(strings[0]); // → abc Console.WriteLine(strings[1]); // → def Console.WriteLine(strings[2]); // → ghi |
文字列を文字(Char)の配列に変換する
文字列を文字(Char)の配列に変換するにはStringクラスのToCharArrayメソッドを使用します。
1 2 3 4 5 |
// 文字の配列に変換する string str = "abcde"; char[] chars = str.ToCharArray(); Console.WriteLine(chars); // → abcde |
オブジェクトの値を指定した書式で文字列に変換する
オブジェクトの値を指定した書式で文字列に変換するにはStringクラスのFormat静的メソッドを使用します。
1 2 3 4 5 |
// decimal price = 123456m; string str = string.Format("金額: {0:#,0}円", price); Console.WriteLine(str); // → 金額: 123,456円 |