【C#】自作文字列操作関数【コピペOK】

C#

はじめに

C#に限らずですが、文字列操作はプログラミングをする上で頻繁に行います。
標準で用意されているSystem.Stringクラスのメソッドである程度は対応できるのですが、かゆいところに手が届かないって事ないでしょうか。
ごりへいはそんなよく使用する処理をまとめたライブラリを自作しています。

ここでは文字列操作に関するUtilityな関数を共有したいと思います。
また、文字列操作系は多くの人が作成していると思いますので被っている内容もあるかと思います。
ですがパクリというわけではないので悪しからず。
(参考にしたサイトがある場合、引用として記載します。)

また、掲載しているコードはご自由にコピペしていただいて構いませんが、利用によって生じた損害等の一切の責任を負いかねますのでご了承ください。
(随時更新予定)

文字列操作関数

Left(文字列先頭から指定文字数の文字を取得)

対象文字列の先頭から指定した文字数の文字列を取得する関数です。
System.string.Substring()をラップした関数ですね。
System.string.Substring()だと文字列を切り取っているのはわかりますが、先頭なのか、途中なのか、最後なのか、引数で判断しなければならないので分かりにくいですし、引数の指定ミスなどでバグになる可能性もあります。
頻繁に使用するので、関数化は必須ですね。

this string strとしているので、stringクラスの拡張メソッドとなっています。

拡張メソッドとは
拡張メソッドを使用すると、新規の派生型の作成、再コンパイル、または元の型の変更を行うことなく既存の型にメソッドを “追加” できます。 拡張メソッドは静的メソッドですが、拡張された型のインスタンス メソッドのように呼び出します。 C#、F#、Visual Basic で作成されたクライアント コードの場合は、拡張メソッドの呼び出しと、型で定義されているメソッドの呼び出しに明確な違いはありません。

拡張メソッド – C# プログラミング ガイド | Microsoft Docs

対象文字列の末尾から指定した文字数の文字列を取得する関数です。
Leftの反対版ですね。
説明はLeftと同じですので、省略します。

RemoveLeft(文字列先頭から指定文字数の文字を削除した文字列を取得)

対象文字列の先頭から指定した文字数文字を削除した文字列を取得する関数です。
説明はLeftと同じですので、省略します。

RemoveRight(文字列末尾から指定文字数の文字を削除した文字列を取得)

対象文字列の末尾から指定した文字数文字を削除した文字列を取得する関数です。
説明はLeftと同じですので、省略します。

ContainsAny(文字列に指定文字列が含まれているかをチェック)

対象文字列内にsourcesで指定した文字列が1つ以上含まれているかどうかを判定する関数です。
大文字小文字を区別するかどうかを指定出来ます。
IndexOfでは含まれる文字が1つしか指定できないため作りました。

ContainsAny(Overload)(文字列に指定文字列が含まれているかをチェック)

上記のContainsAnyの引数をコレクションにしたものです。
説明は省略します。

ContainsAll(文字列に指定文字列が全て含まれているかをチェック)

対象文字列内にsourcesで指定した文字列がすべて含まれているかどうかを判定する関数です。
大文字小文字を区別するかどうかを指定出来ます。

ContainsAll(Overload)(文字列に指定文字列が全て含まれているかをチェック)

上記のContainsAllの引数をコレクションにしたものです。
説明は省略します。

IsHiragana(文字列がひらがなのみで構成されているかチェック)

対象文字列がひらがなかどうかを判定する関数です。
こちらは以下のサイトを参考にした記憶があります。

U+3040からU+309Fまでは「Hiragana」というブロック名が付いています。よって任意のひらがな1文字を表す正規表現パターンとして、「\p{IsHiragana}」が使えます。
U+30FCの「ー」(長音記号)とU+30A0の「゠」(ダブルハイフン)が含まれていませんので、これをひらがなと判断したい場合は気をつけてください。

文字がひらがなか、カタカナか、漢字か、英数字か調べる – .NET Tips (VB.NET,C#…) (dobon.net)

U+30FCの「ー」(長音記号)とU+30A0の「゠」(ダブルハイフン)はひらながと判定しませんので、注意が必要です。

IsKatakana(文字列がカタカナのみで構成されているかチェック)

対象文字列がカタカナかどうかを判定する関数です。
こちらもIsHiraganaと同様のサイトを参考にしたと思います。

IsNumeric(文字列が数字のみで構成されているかチェック)

対象文字列が数字のみで構成されているかどうかを判定する関数です。
小数点を認めるか、負の記号を認めるか引数で指定出来ます。

IsLowercaseAlphanumeric(文字列が小文字の半角英数字のみで構成されているかチェック)

対象文字列が小文字の半角英数字のみで構成されているかどうかを判定する関数です。

IsUppercaseAlphanumeric(文字列が大文字の半角英数字のみで構成されているかチェック)

対象文字列が大文字の半角英数字のみで構成されているかどうかを判定する関数です。

IsAlphanumeric(文字列が半角英数字のみで構成されているかチェック)

対象文字列が半角英数字のみで構成されているかどうかを判定する関数です。

文字列の型変換

文字列型から組み込み型への型変換関数です。
Float,Doubleは最大値でToString()→変換とすると桁落ちして元の値と同じではなくなります。(言語仕様)
また、当然と言えば当然ですが、DateTime型は”2022/01/01 12:12:12″という文字列をParseしても内部のTickまでは当然変換されないため、DateTime.Compare()としてもfalseになります。
年月日時間以下の詳細な情報を変換する必要がある場合はご注意ください。

ToMoneyFormat(文字列を,(カンマ)区切り文字列に変換)

対象文字列を,(カンマ)区切りに変換する関数です。

IsNullOrEmpty(文字列がNULLまたは空かチェック)

stringクラスのIsNullOrEmptyメソッドの拡張メソッドになります。
string.IsNullOrEmpty(変数) ではなく、 変数.IsNullOrEmpty() と記載するためだけに作りました。

C#プログラミング
凡人プログラマーのブログ

コメント