文頭にある特定の文字列を消す
例えば住所データ。
データの持ち方によっては、都道府県名を削除して表示する際に、文頭にある指定した文字を消す必要が出てくる。
"京都府京都市上京区岩栖院町4-15-6" → "京都市上京区岩栖院町4-15-6"
文字列の始まりということで、String.TrimStart メソッド が思いつくのだが、これは引数に char[] を取るため、どうしようかと迷ってしまう。
そこで String.ToCharArray メソッド が登場する。この方法は一見するとうまくいくように見えるかもしれないが、先に上げたテストデータではうまくいかないw
正解は、このような場合は正規表現で消すしかない。
Regex.Replace メソッド - https://msdn.microsoft.com/
データの持ち方によっては、都道府県名を削除して表示する際に、文頭にある指定した文字を消す必要が出てくる。
"京都府京都市上京区岩栖院町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/