ITメモ
C#




【C#】「C#」の文字列

【C#】
「C#」の文字列











文字列の宣言と初期化


C#の文字列は、「String」型のオブジェクトとして扱う。

文字列の「Length」プロパティは、Unicode文字数ではなく、文字列に含まれる「Char」オブジェクトの数を表す。

「@」マークを利用することにより、ヒアドキュメントとして文字列を記述することができる。
「@」マークから「;」マークまで、入力した通りの内容で、変数などに文字列を格納することができる。
エスケープシーケンスを入力せずに、「"」などの文字が入力できるようになっている。



文字列の宣言と初期化


string 変数名;


string 変数名 = null;
string 変数名 = System.String.Empty;


string 変数名 = "c:\\ディレクトリ名\\ディレクトリ名\\ディレクトリ名";
string 変数名 = @"c:\ディレクトリ名\ディレクトリ名\ディレクトリ名";


System.String 変数名 = "テキスト文字列";
var 変数名 = "テキスト文字列";
const string 変数名 = "テキスト文字列";


char[] 配列名 = { 'A', 'B', 'C' };
string 変数名 = new string(配列名);




文字列のエスケープ シーケンス

エスケープ シーケンス文字名Unicode エンコーディング
\'単一引用符0x0027
\"二重引用符0x0022
\|円記号0x005C
\0Null0x0000
\a警告0x0007
\bバックスペース0x0008
\fフォーム フィード0x000C
\n改行0x000A
\rキャリッジ リターン0x000D
\t水平タブ0x0009
\Uサロゲート ペアの Unicode エスケープ シーケンス\Unnnnnnnn
\uUnicode エスケープ シーケンス\u0041 = "A"
\v垂直タブ0x000B
\xUnicode エスケープ シーケンス (可変長である点を除き "\u" に類似)\x0041 = "A"


Back



文字列の連結


「C#」で文字列を連結するには、
・「+ 演算子」
・「+= 演算子」
・「System.String.Concat メソッド」
・「System.String.Format メソッド」
・「System.Text.StringBuilder.Append メソッド」
を使用する。



文字列の連結
string 変数名 = 変数名 + 変数名;
文字列変数 += 文字列変数;


Back



文字列の置き換え


「C#」で文字列を置き換えするには、
・Replace
を使用する。



文字列の置き換え
変数名 = 変数名.Replace("現在の文字列", "置き換える文字列");


string Text1 = "Sample";
fixed (char* Pointer_Text1 = Text1)
{
Pointer_Text1[0] = 'T';
}


string str = "The Pretty Dog";
char[] chars = str.ToCharArray();
int SearchPosition = str.IndexOf("Dog");
if (SearchPosition != -1)
{
chars[SearchPosition++] = 'c';
chars[SearchPosition++] = 'a';
chars[SearchPosition] = 't';
}


Back



文字列の比較


「C#」で文字列を比較するには、
・Equals
を使用する。



文字列の比較
string Text1 = @"C:\Users\FirstDir\ChildDir"; string Text2 = @"C:\Users\SecondDir\ChildDir"; bool result = Text1.Equals(Text2, StringComparison.Ordinal);
要素説明
System.StringComparison.Ordinal 大文字と小文字を区別する。
System.StringComparison.OrdinalIgnoreCase 大文字・小文字を区別しない。
StringComparison.OrdinalIgnoreCase 「ファイル名」「パス名」「ネットワーク パス」「ユーザーのコンピューターのロケール」に基づいて変更されない値以外の文字列を比較。


Back



文字列の分割


「C#」で文字列を分割するには、
・Split
を使用する。



文字列の分割
char[] DelimiterChars = { ' ', ',', '.', ':', '\t' };
string Text1 = "one.two:three:four,five six\tseven";
string[] Text1_Array = Text1.Split(DelimiterChars);


対象の文字列内に区切り文字が2つ連続して現れた場合、
結果の配列に空の文字列を返す。
Splitのオプション「StringSplitOptions.RemoveEmptyEntries」パラメーターを指定すると、
結果として渡される配列から、空の文字列を除外することが可能。


Back



文字列の検索


「C#」で文字列を検索するには、
・IndexOf
・LastIndexOf
・StartsWith
・EndsWith
・System.Text.RegularExpressions.Regex.IsMatch
を使用する。


メソッド説明
IndexOf
LastIndexOf
StartsWith
EndsWith
 
System.Text.RegularExpressions.Regex.IsMatch正規表現で文字列を検索



文字列の検索
bool 変数名 = 変数名.StartsWith("検索文字列");
bool 変数名 = 変数名.StartsWith("検索文字列", System.StringComparison.CurrentCultureIgnoreCase);
bool 変数名 = 変数名.EndsWith("検索文字列", System.StringComparison.CurrentCultureIgnoreCase);
int 変数名 = 変数名.IndexOf("検索文字列") + "検索文字列".Length;
int 変数名 = 変数名.LastIndexOf("検索文字列");
string 変数名 = 変数名.Substring(first, last - first);


bool 変数名 = System.Text.RegularExpressions.Regex.IsMatch(検索する文字列変数, "検索文字列", System.Text.RegularExpressions.RegexOptions.IgnoreCase)


Back