【C#】文字列比較あれこれ

よく使う System.String の文字列比較メモ C#限定

先頭の文字列が等しいかどうか

public bool StartsWith (string value);

リファレンス

// 例
// 何かしらの文字列の配列
void hoge( string[] flies)
{
	// 先頭の文字列が "Assets/hoge/" のみ列挙
	foreach( var file in flies.Where( x => x.StartsWith( @"Assets/hoge/")))
	{
		// 何かしらの処理
		Log( $"file={file}"); ログに出力など
	}
}

末尾の文字列が等しいかどうか

public bool EndsWith (string value);

リファレンス

// 例
// 何かしらの文字列の配列
void hoge( string[] flies)
{
	// 末尾の文字列が ".xml" のみ列挙
	foreach( var file in flies.Where( x => x.EndsWith( @".xml")))
	{
		// 何かしらの処理
		ToJson( file); // Jsonに変換など
	}
}

等しいかどうか

public bool Equals (string value);

リファレンス

// 例
// 何かしらの文字列
void hoge( string item)
{
	if( item.Equals( "お宝"))
	{
		// item が お宝だったら ゲットだぜ
		Log( "ゲットだぜ");
	}
}

含まれているかどうか

public bool Contains (string value);

リファレンス

// 例
// 何かしらの文字列
void hoge( string nodeName)
{
	// 文字列に _Temp_ が含まれているかどうか
	if( nodeName.Contains( "_Temp_"))
	{
		// テンポラリらしい
	}
}

Nullまたは空の文字列かどうか

public static bool System.String.IsNullOrEmpty (string value);

リファレンス

// 例
// 何かしらの文字列
void hoge( string cellText)
{
	if( string.IsNullOrEmpty( cellText))
	{
		// 中断
		return;
	}
	// 処理
	// ...
}

Nullまたは 空または空白だけの文字列

public static bool System.String.IsNullOrWhiteSpace (string value);

リファレンス

// 例
// 何かしらの文字列
void hoge( string fileName)
{
	if( string.IsNullOrWhiteSpace( fileName))
	{
		// 中断
		return;
	}
	// 処理
	// ...
}

サンプル

アセットにファイルがインポートされたときに XML を Json に変換などする

//----------------------------------------------------------------------------
// アセットがインポートされたあとに呼び出されるよ
public static void OnPostprocessAllAssets(
	string[] importedAssets,
	string[] deletedAssets,
	string[] movedAssets,
	string[] movedFromAssetPaths
)
{
	// "Assets/#Resources/" というディレクトリ内で
	// .xml という拡張子で
	// ".~lock." という文字列を含んでなければ
	var xmlfiles = importedAssets
		.Where( x => x.StartsWith( "Assets/#Resources/") )
		.Where( x => x.EndsWith( @".xml") )
		.Where( x => !x.Contains( ".~lock."));

	// xml を json に変換とか
	foreach( var xmlfile in xmlfiles)
	{
		ToJson( xmlfile);
	}
}


余談

一般的な Unicode の世界をチラ見したらカオスだったのでそっ閉じした。

こちらのサイト様が面白いです。
C++標準化委員会、ついに文字とは何かを理解する: char8_t

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です