📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 文字列「<source lang」を「<syntaxhighlight lang」に置換 |
|||
| (同じ利用者による、間の7版が非表示) | |||
| 2行目: | 2行目: | ||
Console.ReadLineメソッドは、入力された文字を1行読み取る。(戻り値はstring型)<br> | Console.ReadLineメソッドは、入力された文字を1行読み取る。(戻り値はstring型)<br> | ||
int型を扱う場合は、型変換を行う必要がある。<br> | int型を扱う場合は、型変換を行う必要がある。<br> | ||
< | <syntaxhighlight lang="c#"> | ||
using System; | using System; | ||
using System.Text; | using System.Text; | ||
| 23行目: | 23行目: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 66行目: | 66行目: | ||
{0}のところにはaの値が、{1}のところにはbの値、{2}のところにはcの値が入る。<br> | {0}のところにはaの値が、{1}のところにはbの値、{2}のところにはcの値が入る。<br> | ||
{0}や{1}の0の部分をパラメータ指定子と呼ぶ。<br> | {0}や{1}の0の部分をパラメータ指定子と呼ぶ。<br> | ||
< | <syntaxhighlight lang="c#"> | ||
Console.WriteLine("1番目の値は{0}, 2番目の値は{1}, 3番目の値は{2}", a, b, c); | Console.WriteLine("1番目の値は{0}, 2番目の値は{1}, 3番目の値は{2}", a, b, c); | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
* 文字列補間(String Interpolation)を使用する。 | * 文字列補間(String Interpolation)を使用する。 | ||
パラメータ指定子は、置換したい変数が多い場合、パラメーター指定子と変数の対応関係が見辛い。<br> | パラメータ指定子は、置換したい変数が多い場合、パラメーター指定子と変数の対応関係が見辛い。<br> | ||
この問題を解決するために、文字列補間と呼ばれる機能がC# 6.0から追加された。<br> | この問題を解決するために、文字列補間と呼ばれる機能がC# 6.0から追加された。<br> | ||
< | <syntaxhighlight lang="c#"> | ||
Console.WriteLine($"1番目の値は{a}, 2番目の値は{b}, 3番目の値は{c}"); | Console.WriteLine($"1番目の値は{a}, 2番目の値は{b}, 3番目の値は{c}"); | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
* 連結演算子を使用する。 | * 連結演算子を使用する。 | ||
連結演算子(+)は、文字列と文字列を接続するために使用する。<br> | 連結演算子(+)は、文字列と文字列を接続するために使用する。<br> | ||
連結演算子(+)を文字列と値に使用した場合、値は文字列に変換される。<br> | 連結演算子(+)を文字列と値に使用した場合、値は文字列に変換される。<br> | ||
< | <syntaxhighlight lang="c#"> | ||
Console.WriteLine("1番目の値は" + a + ", 2番目の値は" + b + ", 3番目の値は" + c); | Console.WriteLine("1番目の値は" + a + ", 2番目の値は" + b + ", 3番目の値は" + c); | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
'''※備考'''<br> | '''※備考'''<br> | ||
| 105行目: | 105行目: | ||
書式設定フィールドの幅の値は、正の場合は右揃え、負の場合は左揃えを意味する。<br> | 書式設定フィールドの幅の値は、正の場合は右揃え、負の場合は左揃えを意味する。<br> | ||
もし、書式設定フィールドの幅よりも文字列が長い場合は、設定は無視される。(書式設定フィールドの幅は無効となる)<br> | もし、書式設定フィールドの幅よりも文字列が長い場合は、設定は無視される。(書式設定フィールドの幅は無効となる)<br> | ||
< | <syntaxhighlight lang="c#"> | ||
Console.WriteLine("{0, 10:p}", 0.1234); | Console.WriteLine("{0, 10:p}", 0.1234); | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 144行目: | 144行目: | ||
|} | |} | ||
</center> | </center> | ||
<br> | |||
<syntaxhighlight lang="c++"> | |||
namespace Format | |||
{ | |||
class Program | |||
{ | |||
static void Main(string[] args) | |||
{ | |||
// c(C) : 通貨 | |||
Console.WriteLine("{0:c}", 100); // \100 | |||
Console.WriteLine("{0:c}", 200.0); // \200 | |||
// d(D) : 10進数表示(整数型のみ) | |||
Console.WriteLine("{0:d}", 100); // 100 | |||
Console.WriteLine("{0:d6}", 100); // 000100 6桁表記 | |||
Console.WriteLine("{0:d99}", 100); // 0...0100 99桁表記 | |||
Console.WriteLine("{0:d100}", 100); // d1100 | |||
// 精度指定子は0 - 99までなので不適切 | |||
// 文字列d1とカスタム数値書式指定子00の組み合わせと解釈される | |||
// e(E) : 浮動小数点 | |||
// 標準では小数点以下は6桁まで表示される | |||
Console.WriteLine("{0:e}", 1234); // 1.234000e+003 | |||
Console.WriteLine("{0:e}", 123456789); // 1.234568e+008 | |||
Console.WriteLine("{0:E}", 123456789); // 1.234568E+008 | |||
Console.WriteLine("{0:e10}", 123456789); // 1.2345678900e+008 | |||
Console.WriteLine("{0:e10}", 1.23456789); // 1.2345678900e+000 | |||
Console.WriteLine("{0:e10}", 12345.67891234567); // 1.2345678912e+004 | |||
// f(F) : 固定小数点 | |||
// 標準では小数点以下は2桁まで表示される | |||
Console.WriteLine("{0:f}", 1234); // 1234.00 | |||
Console.WriteLine("{0:f}", 1.23456789012345); // 1.23 | |||
Console.WriteLine("{0:f}", 12345.67891234567); // 12345.68 | |||
Console.WriteLine("{0:f10}", 1.23456789012345); // 1.2345678901 | |||
Console.WriteLine("{0:f10}", 12345.67891234567); // 12345.6789123457 | |||
// g(G) : 浮動小数点か固定小数点のうち最適な方を自動で選択されて表示される | |||
// 0.0001未満の値を扱う場合や精度指定子から数値があふれている場合、浮動小数点による表記 | |||
Console.WriteLine("{0:g}", 123456789.012345); // 123456789.012345 固定小数点 | |||
Console.WriteLine("{0:g5}", 123456789.012345); // 1.2346e+08 浮動小数点 | |||
Console.WriteLine("{0:g}", 0.0001); // 0.0001 固定小数点 | |||
Console.WriteLine("{0:g}", 0.000099); // 9.9e-05 浮動小数点 | |||
// n(N) : 3桁間隔で区切る | |||
// 標準では小数点以下は2桁までのみ表示される | |||
Console.WriteLine("{0:n}", 1234); // 1,234.00 | |||
Console.WriteLine("{0:n}", 123456789); // 123,456,789.00 | |||
Console.WriteLine("{0:n}", 1.23456789012345); // 1.23 | |||
Console.WriteLine("{0:n}", 123456789.1234); // 123,456,789.12 | |||
Console.WriteLine("{0:n4}", 123456789.1234); // 123,456,789.1234 | |||
// p(P) : パーセント表示 | |||
// 標準では%表記で小数点2桁までのみ表示される | |||
Console.WriteLine("{0:p}", 0.12); // 12.00% | |||
Console.WriteLine("{0:p}", 0.123456); // 12.35% | |||
Console.WriteLine("{0:p}", 1.2345); // 123.45% | |||
Console.WriteLine("{0:p4}", 0.123456789); // 12.3457% 小数点4桁まで | |||
// r(R) : ラウンドトリップ書式指定子 | |||
Console.WriteLine("{0:r}", 12.34567); // 12.34567 | |||
Console.WriteLine("{0:r}", 12.34567890123456789f); // 12.345679 flaot型は9桁のみ表示される | |||
Console.WriteLine("{0:r15}", 12.34567890123456789f); // 12.345679 同様にflaot型なので9桁のみ表示される | |||
Console.WriteLine("{0:r}", 12.34567890123456789); // 12.345678901234567 double型は17桁のみ表示される | |||
//Console.WriteLine("{0:r}", 1234); // 整数はエラーが起きる | |||
// x(X) : 16進数表示 | |||
Console.WriteLine("{0:x}", 9); // 9 | |||
Console.WriteLine("{0:X}", 10); // A | |||
Console.WriteLine("{0:x}", 10); // a | |||
Console.WriteLine("{0:x}", 15); // f | |||
Console.WriteLine("{0:x}", 16); // 10 | |||
Console.WriteLine("{0:x}", 17); // 11 | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | <br> | ||
'''精度指定子'''<br> | '''精度指定子'''<br> | ||
| 155行目: | 232行目: | ||
<br> | <br> | ||
以下のサンプルコードでは、書式指定子はd、精度指定子が6となり、10進数表示で6桁分確保される。<br> | 以下のサンプルコードでは、書式指定子はd、精度指定子が6となり、10進数表示で6桁分確保される。<br> | ||
< | <syntaxhighlight lang="c#"> | ||
Console.WriteLine( | Console.WriteLine("{0:d6}", 100); | ||
</ | </syntaxhighlight> | ||
出力は、以下のようになる。<br> | 出力は、以下のようになる。<br> | ||
000100 | 000100 | ||
<br> | <br> | ||
===== カスタム数値書式指定文字列 ===== | ===== カスタム数値書式指定文字列 ===== | ||
カスタム数値書式指定文字列は、1つ以上のカスタム数値書式指定子で構成される。<br> | カスタム数値書式指定文字列は、1つ以上のカスタム数値書式指定子で構成される。<br> | ||
| 191行目: | 269行目: | ||
</center> | </center> | ||
<br> | <br> | ||
< | <syntaxhighlight lang="c#"> | ||
namespace Coustom | namespace Coustom | ||
{ | { | ||
| 295行目: | 373行目: | ||
} | } | ||
} | } | ||
</syntaxhighlight> | |||
<br><br> | |||
== StringBuilderクラス == | |||
C#において、文字列を+で繋ぐ方法は処理に負担が掛かるため、速度を重視する場合は、StringBuilderクラスを使用する。<br> | |||
StringBuilderクラスのAppendメソッドを使用する場合、数100倍以上、処理速度が向上することがある。<br> | |||
<syntaxhighlight lang="c#"> | |||
using System.Text | |||
StringBuilder stb = new StringBuilder("今日の日付 : "); | |||
stb.Append(DateTime.Today); | |||
stb.Append("\n"); | |||
Console.WriteLine(stb.ToString()); | |||
</syntaxhighlight> | |||
<br><br> | |||
== 文字列の検索 == | |||
==== 前方一致 ==== | |||
文字列に特定の文字がどの位置に含まれているか確認する場合、IndexOfメソッドを使用する。<br> | |||
以下の例では、"あいうえお"の中に"う"は先頭の文字(0番目)から数えて2番目、"えお"は3番目、"か"および"いか"は存在しないため-1となる。<br> | |||
<syntaxhighlight lang="c#"> | |||
string str = "あいうえお"; | |||
Console.WriteLine(str.IndexOf("う")); | |||
Console.WriteLine(str.IndexOf("えお")); | |||
Console.WriteLine(str.IndexOf("か")); | |||
Console.WriteLine(str.IndexOf("いか")); | |||
# 出力 | |||
2 | |||
3 | |||
-1 | |||
-1 | |||
</syntaxhighlight> | |||
<br> | |||
==== 前方一致と後方一致 ==== | |||
文字列の検索において、前方一致や後方一致を指定して検索する場合、以下のように記述する。<br> | |||
<syntaxhighlight lang="c#"> | |||
string filename = “”abcde.txt””; | |||
if (filename.StartsWith("ab")) | |||
{ | |||
Console.WriteLine("前方一致"); | |||
} | |||
if (filename.EndsWith(".txt")) | |||
{ | |||
Console.WriteLine("後方一致"); | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== 空文字またはnullの確認 == | |||
空文字の確認を行う場合、String.Emptyメソッドを使用する。 | |||
また、空文字またはNULLの確認を行う場合、String.IsNullOrEmptyメソッドを使用する。<br> | |||
<syntaxhighlight lang="c#"> | |||
string str = ""; | |||
if (str == String.Empty) | |||
{ | |||
Console.WriteLine("空文字です。"); | |||
} | |||
str = null; | |||
if (String.IsNullOrEmpty(str)) | |||
{ | |||
Console.WriteLine("nullか空文字です。"); | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
また、空白文字またはNULLの確認を行う場合、String.IsNullOrWhiteSpaceメソッドを使用する。<br> | |||
<syntaxhighlight lang="c#"> | |||
string str = ""; | |||
if (String.IsNullOrWhiteSpace(str)) | |||
{ | |||
Console.WriteLine("nullか空白です。""); | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== 文字列の分割と結合 == | |||
文字列を指定した文字で区切り、区切った文字列を結合する。<br> | |||
<syntaxhighlight lang="c#"> | |||
string csv1 = "あああ,いいい,ううう"; | |||
// Splitメソッドで区切って配列aryValuesに変換 | |||
string[] aryValues = csv.Split(","); | |||
foreach(var value in aryValues) | |||
{ | |||
Console.WriteLine(value); | |||
} | |||
// JoinメソッドでCSV形式に変換 | |||
string csv2 = String.Join(",", ary); | |||
Console.WriteLine(join); | |||
# 出力 | |||
あああ | |||
いいい | |||
ううう | |||
あああ,いいい,ううう | |||
</syntaxhighlight> | |||
<br><br> | |||
== 文字列の部分抽出と部分削除 == | |||
==== 部分抽出 ==== | |||
文字列から一部を抽出する場合、以下のように記述する。<br> | |||
以下の例では、0番目の文字から数えて2番目の文字から2文字を抽出している。<br> | |||
<syntaxhighlight lang="c#"> | |||
string str = "あいうえお"; | |||
Console.WriteLine(str.Substring(2, 2)); | |||
# 出力 | |||
うえ | |||
</syntaxhighlight> | |||
<br> | |||
==== 部分削除 ==== | |||
文字列の前後の空白やエスケープシーケンスを削除する場合、以下のように記述する。<br> | |||
以下の例では、文字列の前後の全角半角スペースとエスケープシーケンスを削除しているが、途中にあるものは残ってしまう。<br> | |||
<syntaxhighlight lang="c#"> | |||
string str = "\t あ\nい う えお \n"; | |||
Console.WriteLine("." + str.Trim() + "."); | |||
# 出力 | |||
.あ | |||
い う えお. | |||
</syntaxhighlight> | |||
<br> | |||
以下の例では、指定した範囲を削除している。<br> | |||
0番目の文字から数えて、1番目から3番目の文字を削除している。<br> | |||
<syntaxhighlight lang="c#"> | |||
string str = "あいうえお"; | |||
Console.WriteLine(str.Remove(1,3)); | |||
# 出力 | |||
あお | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:C_Sharp]] | [[カテゴリ:C_Sharp]] | ||