Pages

2015/03/19

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

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

 "京都府京都市上京区岩栖院町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/

Related Posts Plugin for WordPress, Blogger...