文頭にある特定の文字列を消す

例えば住所データ。
データの持ち方によっては、都道府県名を削除して表示する際に、文頭にある指定した文字を消す必要が出てくる。

 "京都府京都市上京区岩栖院町4-15-6" → "京都市上京区岩栖院町4-15-6"

文字列の始まりということで、String.TrimStart メソッド が思いつくのだが、これは引数に char[] を取るため、どうしようかと迷ってしまう。
そこで String.ToCharArray メソッド が登場する。この方法は一見するとうまくいくように見えるかもしれないが、先に上げたテストデータではうまくいかないw

正解は、このような場合は正規表現で消すしかない。
string address1 = "京都府京都市上京区岩栖院町4-15-6 京都府";
string character1 = "京都府";
string character2 = @"^京都府+";

// 結果:市上京区岩栖院町4-15-6
string result1 = address1.TrimStart(character1.ToCharArray());
// 結果:京都市上京区岩栖院町4-15-6
string result2 = Regex.Replace(address1, character2, "");

// 文頭にあるはじめの文字だけ削除される。
string address2 = "京都府京都府京都市上京区岩栖院町4-15-6 京都府";
// 結果:京都府京都市上京区岩栖院町4-15-6 京都府
string result3 = Regex.Replace(address2, character2, "");
文字列を消すように使用したが、本来は文字列の置換のために用意されたメソッドであるので、色々と応用はできると思う。拡張メソッドで定義しておき、プロジェクト内で共有しておけば間違いがなくなるだろう。

Regex.Replace メソッド - https://msdn.microsoft.com/

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する