要約: C# 文字列の使用法を具体的な例とともに詳しく説明します。
プログラミング言語: C#
プログラミング環境:Visual Studio 2019
目次
文字列はテキスト オブジェクトを表し、文字が 1 つずつ並んでいることを意味し、広く使用されている Char オブジェクトの連続した読み取り専用のコレクションとみなされます。
エスケープ文字シーケンス
文字列について話す前に、文字について話しましょう。プログラミングをしていると、文字や文字列の中に特殊文字が含まれることがよくあります。例えば文字を定義したい場合、この文字はシングルクォーテーションですが、シングルクォーテーションを直接入力するとエラーになりますが、そのような文字列は定義できないのでしょうか?それは C# 言語を過小評価することになります。文法に抵触する文字や特殊な意味をもつ一部の文字については、「\」をエスケープ文字として指定し、後続の文字を特別に扱う必要があり、その意味は後続の文字に応じて決まります。一般的に使用されるエスケープ文字シーケンスは次のとおりです。
エスケープ文字シーケンス | キャラクター名 | プログラム例 | 演算結果 |
\' | アポストロフィ | Write("C\'#"); | C'# |
「 | 二重引用符 | Write("C\"#"); | C"# |
\n | 改行 | Write("C\n#"); | C # |
\t | Tabキー(スペース) | Write("C\t#") | C# |
\r | キャリッジリターン(行頭に戻る) | Write("C\r#") | #C |
\\ | バックスラッシュ | Write("C\\#") | C\# |
文字列の作成
文字列の宣言
文字列の宣言は非常に簡単です。文字列を割り当てるときは、文字列の内容を二重引用符 で囲む必要があることに注意してください。宣言の構文は次のとおりです。
string str = "字符串的内容";
NULL文字列と空文字列
ここで空文字列の生成と判定について特別に説明しますが、まず、空文字列の生成には以下の 3 つの方法があります。これら 3 つのメソッドはまったく同じではありません。文字列が null の場合、そのプロパティにアクセスすると、例外が発生します。string.Empty 文字列と "" 文字列は、空の文字列、つまり長さが 0 の文字列を表します。そのため、 string を空にする場合には、 string.Empty または "" がよく使われますが、以前は 3 つの関係が理解できず、 null を使用して文字列を空にしていたため、多くの例外が発生し、非常に苦労しました。
string strNull = null;//null字符串,若访问其成员,会导致异常
string strEmpty = string.Empty;//空字符串,长度为零
string str = "";//空字符串,长度为零
空文字列の作り方を理解しておけば判断は簡単ですが、空文字列を判断するには以下の方法があります。このうち、null は空文字列の判定のみに対応します。空文字列 string.Empty と "" は同等とみなせます。string.IsNullOrEmpty は空文字列と空文字列の両方の判定を含みます。いくつかの空白文字で構成されます。
if (str == null)
{
//仅在str=null时返回true
}
else if (str == "")
{
//在str为空字符串时返回true
}
else if (str == string.Empty)
{
//在str为空字符串时返回true
}
else if (string.IsNullOrEmpty(str))
{
//在str=null或空字符串时返回true
}
else if (string.IsNullOrWhiteSpace(str))
{
//在str=null、空字符串或若干空白字符组成的字符串时返回true
}
単一文字の文字列を繰り返す構成要素
文字列 string はその構築方法を示します。コンストラクターは次のとおりです。関数は count ch 文字で構成される文字列を構築することです。
String(char ch, int count);//重复单字符组成的字符串构造
文字列のプロパティと一般的なメソッド
属性
- 長さ: 文字列の (読み取り専用) 長さを取得します。
- this[index]: 指定されたインデックス位置の文字を取得 (読み取り専用) します。
一般的な方法
- CompareTo(str): 現在の文字列が str と等しいかどうかを判断し、等しい場合は 0 を返します。(注: 文字列の等しいかどうかを判定するには、判定する 2 つの文字列を論理的等号記号「==」で直接結合することもできます)
- ToUpper(): 文字列のすべての文字を大文字に変換します。
- ToLower(): 文字列のすべての文字を小文字に変換します。
- Insert(index, str): インデックス位置indexの後に文字列strを挿入した後の文字列を返します。
- Remove(index,count): インデックス位置indexからcount文字を削除する文字列を返します。
- Replace(oldchar, newchar): 文字列内のすべての oldchar 文字を newchar 文字に置き換える文字列を返します。
- Replace(oldstr, newstr): newstr 文字列によって置換された文字列内の oldstr 文字列を含むすべての文字列を返します。
Replace メソッドをテストします。コードは次のとおりです。
string str1 = "She is a girl";
Console.WriteLine(str1.Replace("girl", "boy"));
Console.WriteLine(str1.Replace('i', 'E'));
操作結果。
- Substring(index,count): インデックス位置のインデックスから切り取った count 文字の文字列を返します。
- Substring(index): インデックス位置のindexから最後まで切り取った文字列を返します。
- Split(char): 文字 char で区切られた文字列の配列を返します。(注: 分割文字列配列の要素には区切り文字自体は含まれません)
Split メソッドをテストします。コードは次のとおりです。
string str2 = "a,b,c,d";
string[] STR = str2.Split(',');
for(int i = 0; i < STR.Length; i++)
{
Console.WriteLine(STR[i]);
}
操作結果。
- IndexOf(char): 小さい文字から大きい文字まで一致した最初の文字 char のインデックス番号を返します。
- LastIndexOf(char): 大きい文字から小さい文字まで一致した最初の文字 char のインデックス番号を返します。
- StartsWith(str): 一致する文字列の先頭が str であるかどうかにかかわらず、true を返し、それ以外の場合は false を返します。
- EndsWith(str): 一致する文字列の末尾が str であるかどうかにかかわらず、true を返し、それ以外の場合は false を返します。
まとめ
この記事では、エスケープ文字列、つまり競合する文字や特別な意味を表す文字の入力方法、次に宣言を含む文字列の作成、空文字列や空文字列の作成と判定の違い、文字列について説明します。繰り返し文字の構成、最後に文字列のプロパティやメソッドから文字列の機能を詳しく説明します。
それぞれのメッセージ
間違いは避けられませんが、同じことを繰り返さないでください。