今まで貯めてきた文字列の拡張メソッドをこのページにまとめておきます。
拡張メソッドについては以下の記事を参照してください。
目次
- 1 文字列の拡張メソッド StringExtensions
- 2 StringExtensions クラスのメソッド一覧
- 3 Append メソッド
- 4 Contains メソッド
- 5 ContainsAll メソッド
- 6 ContainsAny メソッド
- 7 CutOutAfter メソッド
- 8 CutOutBefore メソッド
- 9 CutOutBetween メソッド
- 10 DecodeBase64 メソッド
- 11 EncodeBase64 メソッド
- 12 EqualsIgnoreCase メソッド
- 13 ExistsAsDirectory メソッド
- 14 ExistsAsFile メソッド
- 15 Format メソッド
- 16 IfNullOrEmpty メソッド
- 17 IfNullOrWhiteSpace メソッド
- 18 IsAlphabet メソッド
- 19 IsAlphabetOrDigit メソッド
- 20 IsAlphabets メソッド
- 21 IsAlphaNumeric メソッド
- 22 IsDate メソッド
- 23 IsDateTime メソッド
- 24 IsDigit メソッド
- 25 IsEmpty メソッド
- 26 IsInteger メソッド
- 27 IsNotEmpty メソッド
- 28 IsNotNullAndEmpty メソッド
- 29 IsNotNullAndWhiteSpace メソッド
- 30 IsNullOrEmpty メソッド
- 31 IsNullOrWhiteSpace メソッド
- 32 IsNumber メソッド
- 33 IsNumeric メソッド
- 34 IsTime メソッド
- 35 Left メソッド
- 36 LengthB メソッド
- 37 PerentPath メソッド
- 38 Remove メソッド
- 39 Repeat メソッド
- 40 ReplaceAll メソッド
- 41 ReplaceBrTagToCrLf メソッド
- 42 ReplaceCrLfToBrTag メソッド
- 43 Right メソッド
- 44 SaveAs メソッド
- 45 Split メソッド
- 46 ToBooleanOrNull メソッド
- 47 ToByteArray メソッド
- 48 ToByteOrNull メソッド
- 49 ToDateTimeOrNull メソッド
- 50 ToDecimalOrNull メソッド
- 51 ToDirectoryInfo メソッド
- 52 ToDoubleOrNull メソッド
- 53 ToFileInfo メソッド
- 54 ToInt16OrNull メソッド
- 55 ToInt32OrNull メソッド
- 56 ToInt64OrNull メソッド
- 57 ToMemoryStream メソッド
- 58 ToSByteOrNull メソッド
- 59 ToSingleOrNull メソッド
- 60 ToUInt16OrNull メソッド
- 61 ToUInt32OrNull メソッド
- 62 ToUInt64OrNull メソッド
- 63 Truncate メソッド
- 64 YyyymmddToDate メソッド
- 65 参考記事
文字列の拡張メソッド StringExtensions
文字列の拡張メソッドは StringExtensions クラスに実装しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.Text; using System.Text.RegularExpressions; using System.Globalization; using System.IO; namespace Extensions { /// <summary> /// String 拡張メソッドクラス /// </summary> public static class StringExtensions { // ... } } |
StringExtensions クラスのメソッド一覧
StringExtensions クラスに実装しているメソッドの一覧です。
メソッド名 | 説明 |
---|---|
Append | 文字列を末尾に追加します。 |
Contains | カルチャに依存した比較、または大文字と小文字を区別しない比較などの序数による比較を指定できる Contains。 |
Contains | 部分一致・前方一致・後方一致するかどうかを判定します。 |
ContainsAll | 指定した複数の文字列のすべてを含むかどうかを判定します。 |
ContainsAny | 指定した複数の文字列のいずれかを含むかどうかを判定します。 |
CutOutAfter | 指定した文字列が最初に一致した位置より後の文字列を切り取ります。 |
CutOutBefore | 指定した文字列が最初に一致した位置より前の文字列を切り取ります。 |
CutOutBetween | 指定した2つの文字列の間の文字列を切り取ります。 |
DecodeBase64 | Base64 文字列からデコードします。 |
EncodeBase64 | Base64 文字列にエンコードします。 |
EqualsIgnoreCase | 大文字と小文字の区別は無視して同一かどうかを判定します。 |
ExistsAsDirectory | ディレクトリーパスとして存在しているかを判定します。 |
ExistsAsFile | ファイルパスとして存在しているかを判定します。 |
Format | Format の簡易版。インスタンスメソッドのように使用できます。 |
Format | Format の簡易版。インスタンスメソッドのように使用できます。 (引数付き) で呼び出せます。) |
IfNullOrEmpty | Null または空文字列かどうかを判定し、Null の場合は指定した置換文字列に置き換えます。 |
IfNullOrWhiteSpace | Null または空白かどうかを判定し、Null の場合は指定した置換文字列に置き換えます。 |
IsAlphabet | アルファベット文字かどうかを判定します。 |
IsAlphabetOrDigit | 英数字かどうかを判定します。 |
IsAlphabets | アルファベット文字列かどうかを判定します。 |
IsAlphaNumeric | 英数字文字列かどうかを判定します。 | IsDate | 文字列が日付かどうかを判定します。 |
IsDateTime | 文字列が日時かどうかを判定します。 |
IsDigit | 数字かどうかを判定します。 |
IsEmpty | 空文字列かどうかを判定します。 |
IsInteger | 整数かどうかを判定します。 |
IsNotEmpty | 空文字列でないかどうかを判定します。 |
IsNotNullAndEmpty | Null および空文字列でないかどうかを判定します。 |
IsNotNullAndWhiteSpace | Null および空白でないかどうかを判定します。 |
IsNullOrEmpty | IsNullOrEmpty の簡易版。インスタンスメソッドのように使用できます。 |
IsNullOrWhiteSpace | IsNullOrWhiteSpace の簡易版。インスタンスメソッドのように使用できます。 |
IsNumber | 自然数かどうかを判定します。 |
IsNumeric | 文字列が数値かどうかを判定します。 |
IsTime | 文字列が時刻かどうかを判定します。 |
Left | 文字列の左から指定した桁数の文字列を取得します。 |
LengthB | 文字列のバイト数を取得します。 |
PerentPath | 親のパスを取得します。 |
Remove | 文字列から指定した文字列 (複数指定可能) を削除します。 |
Repeat | 文字列を指定回数繰り返した文字列を取得します。 |
ReplaceAll | 複数の文字列を一括で順番に置換します。 |
ReplaceBrTagToCrLf | br タグを改行に置換します。 |
ReplaceCrLfToBrTag | 改行を br タグに置換します。 |
Right | 文字列の右から指定した桁数の文字列を取得します。 |
SaveAs | 文字列を名前を付けて保存します。 |
Split | 指定した区切り文字で分割した値を配列に格納します。 |
Split | 分割する回数と区切り文字を指定して分割した値を配列に格納します。 |
ToBooleanOrNull | 文字列を Null 許容値型の Boolean に変換します。 |
ToByteArray | バイト配列に変換します。 |
ToByteOrNull | 文字列を Null 許容値型の Byte に変換します。 |
ToDateTimeOrNull | 文字列を Null 許容値型の DateTime に変換します。 |
ToDecimalOrNull | 文字列を Null 許容値型の Decimal に変換します。 |
ToDirectoryInfo | 文字列をディレクトリ―のパスとして DirectoryInfo にします。 |
ToDoubleOrNull | 文字列を Null 許容値型の Double に変換します。 |
ToFileInfo | 文字列をファイルのパスとして FileInfo にします。 |
ToInt16OrNull | 文字列を Null 許容値型の Int16 に変換します。 |
ToInt32OrNull | 文字列を Null 許容値型の Int32 に変換します。 |
ToInt64OrNull | 文字列を Null 許容値型の Int64 に変換します。 |
ToMemoryStream | ストリームに変換します。 |
ToSByteOrNull | 文字列を Null 許容値型の SByte に変換します。 |
ToSingleOrNull | 文字列を Null 許容値型の Single に変換します。 |
ToUInt16OrNull | 文字列を Null 許容値型の UInt16 に変換します。 |
ToUInt32OrNull | 文字列を Null 許容値型の UInt32 に変換します。 |
ToUInt64OrNull | 文字列を Null 許容値型の UInt64 に変換します。 |
Truncate | 指定された長さに文字列を切り捨てます。 |
YyyymmddToDate | yyyyMMdd 形式の文字列を日付型に変換します。 |
Append メソッド
文字列を末尾に追加するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/// <summary> /// 文字列を末尾に追加します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="values">追加する文字列</param> /// <returns>末尾に文字列を追加した結果の文字列を返します。</returns> public static string Append(this string @this, params string[] values) { StringBuilder sb = new StringBuilder(); sb.Append(@this); foreach (string value in values) { sb.Append(value); } return sb.ToString(); } |
引数で指定するすべての文字列を現在の文字列の後ろに順に追加します。
「var result = “abc”.Append(“def”, “ghi”, “jkl”);」で呼び出すと、戻り値は「abcdefghijkl」になります。
Contains メソッド
カルチャに依存した比較や、大文字と小文字を区別しない比較などを可能にするContainsメソッドと、部分一致・前方一致・後方一致として比較できるContainsメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
/// <summary> /// カルチャに依存した比較、または大文字と小文字を区別しない比較などの序数による比較を指定できる Contains。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="value">検索する文字列</param> /// <param name="comparison">カルチャ、大文字と小文字の区別、および並べ替え規則を指定する StringComparison</param> /// <returns>一致する場合に true を返します。</returns> public static bool Contains(this string @this, string value, StringComparison comparison) { return @this.IndexOf(value, comparison) >= 0; } /// <summary> /// 部分一致・前方一致・後方一致するかどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="value">検索する文字列</param> /// <param name="likeStyle">一致スタイル</param> /// <returns>一致する場合に true を返します。</returns> public static bool Contains(this string @this, string value, ContainsStyle containsStyle = ContainsStyle.Normal) { bool isMatch = false; switch (containsStyle) { case ContainsStyle.Normal: // 部分一致 isMatch = @this.Contains(value); break; case ContainsStyle.Forward: // 前方一致 isMatch = @this.StartsWith(value); break; case ContainsStyle.Backward: // 後方一致 isMatch = @this.EndsWith(value); break; } return isMatch; } /// <summary> /// Contains の一致スタイル /// </summary> public enum ContainsStyle { /// <summary> /// 部分一致 /// </summary> Normal = 0, /// <summary> /// 前方一致 /// </summary> Forward, /// <summary> /// 後方一致 /// </summary> Backward } |
引数にcomparisonを指定するメソッドにはStringComparison列挙型を指定します。
列挙メンバ名 | 値 | 説明 |
---|---|---|
CurrentCulture | 0 | カルチャに依存した並べ替え規則と、現在のカルチャを使用して、文字列を比較します。 |
CurrentCultureIgnoreCase | 1 | カルチャに依存した並べ替え規則と、現在のカルチャを使用し、比較対象の文字列の大文字と小文字の区別を無視して、文字列を比較します。 |
InvariantCulture | 2 | カルチャに依存した並べ替え規則と、インバリアントカルチャを使用して、文字列を比較します。 |
InvariantCultureIgnoreCase | 3 | カルチャに依存した並べ替え規則と、インバリアントカルチャを使用し、比較対象の文字列の大文字と小文字の区別を無視して、文字列を比較します。 |
Ordinal | 4 | 序数(バイナリ)の並べ替え規則を使用して文字列を比較します。 |
OrdinalIgnoreCase | 5 | 序数(バイナリ)の並べ替え規則を使用し、比較対象の文字列の大文字と小文字の区別を無視して、文字列を比較します。 |
ContainsAll メソッド
複数の文字列を指定して、そのすべてを含むかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/// <summary> /// 指定した複数の文字列のすべてを含むかどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="values">検索する文字列</param> /// <returns>指定した複数の文字列のすべてを含めば true を返します。</returns> public static bool ContainsAll(this string @this, params string[] values) { foreach (string value in values) { if (!@this.Contains(value)) { return false; } } return true; } |
ContainsAny メソッド
複数の文字列を指定して、そのいずれかを含むかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/// <summary> /// 指定した複数の文字列のいずれかを含むかどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="values">検索する文字列</param> /// <returns>指定した複数の文字列のいずれかを含めば true を返します。</returns> public static bool ContainsAny(this string @this, params string[] values) { foreach (string value in values) { if (@this.Contains(value)) { return true; } } return false; } |
CutOutAfter メソッド
指定した文字列から後の文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/// <summary> /// 指定した文字列が最初に一致した位置より後の文字列を切り取ります。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="value">検索する値</param> /// <returns>切り取った文字列を返します。</returns> public static string CutOutAfter(this string @this, string value) { if (@this.IndexOf(value) == -1) { return ""; } return @this.Substring(@this.IndexOf(value) + value.Length); } |
「var result = “abcdefghi”.CutOutAfter(“def”)」で呼び出すと、戻り値は「”ghi”」になります。
CutOutBefore メソッド
指定した文字列までの文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/// <summary> /// 指定した文字列が最初に一致した位置より前の文字列を切り取ります。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="value">検索する値</param> /// <returns>切り取った文字列を返します。</returns> public static string CutOutBefore(this string @this, string value) { if (@this.IndexOf(value) == -1) { return ""; } return @this.Substring(0, @this.IndexOf(value)); } |
「var result = “abcdefghi”.CutOutBefore(“def”);」で呼び出すと、戻り値は「”abc”」になります。
CutOutBetween メソッド
引数で指定する1つ目の文字列と2つ目の文字列の間にある文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/// <summary> /// 指定した2つの文字列の間の文字列を切り取ります。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="beforeValue">検索する前の文字列</param> /// <param name="afterValue">検索する後の文字列</param> /// <returns>切り取った文字列を返します。</returns> public static string CutOutBetween(this string @this, string beforeValue, string afterValue) { int beforeStartIndex = @this.IndexOf(beforeValue); int startIndex = beforeStartIndex + beforeValue.Length; int afterStartIndex = @this.IndexOf(afterValue, startIndex); if (beforeStartIndex == -1 || afterStartIndex == -1) { return ""; } return @this.Substring(startIndex, afterStartIndex - startIndex); } |
「var result = “abcdefghi”.CutOutBetween(“bc”, “gh”);」で呼び出すと、戻り値は「”def”」になります。
DecodeBase64 メソッド
Base64文字列をデコードした文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// Base64 文字列からデコードします。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>デコードした文字列を返します。</returns> public static string DecodeBase64(this string @this) { return Encoding.ASCII.GetString(Convert.FromBase64String(@this)); } |
EncodeBase64 メソッド
文字列をBase64文字列にエンコードした値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// Base64 文字列にエンコードします。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>エンコードした文字列を返します。</returns> public static string EncodeBase64(this string @this) { return Convert.ToBase64String(Activator.CreateInstance<ASCIIEncoding>().GetBytes(@this)); } |
EqualsIgnoreCase メソッド
大文字、小文字を区別せずに同じ文字列かどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 10 |
/// <summary> /// 大文字と小文字の区別は無視して同一かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="comparedValue">比較する値</param> /// <returns>同一であれば true を返します。</returns> public static bool EqualsIgnoreCase(this string @this, string comparedValue) { return @this.Equals(comparedValue, StringComparison.OrdinalIgnoreCase); } |
ExistsAsDirectory メソッド
ディレクトリー(フォルダー)のパスを表す文字列がディスクに存在しているかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// ディレクトリーパスとして存在しているかを判定します。 /// </summary> /// <param name="this">ディレクトリーパス文字列</param> /// <returns>ディレクトリーが存在している場合に true を返します。</returns> public static bool ExistsAsDirectory(this string @this) { return Directory.Exists(@this); } |
ExistsAsFile メソッド
ファイルのパスを表す文字列がディスクに存在しているかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// ファイルパスとして存在しているかを判定します。 /// </summary> /// <param name="this">ファイルパス文字列</param> /// <returns>ファイルが存在している場合に true を返します。</returns> public static bool ExistsAsFile(this string @this) { return File.Exists(@this); } |
Format メソッド
インスタンスメソッドのように使用できるFormatメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/// <summary> /// Format の簡易版。インスタンスメソッドのように使用できます。 (string.Format(format, arg0) が format.Format(arg0) で呼び出せます。) /// </summary> /// <param name="this">複合書式設定文字列</param> /// <param name="arg0">書式指定するオブジェクト</param> /// <returns>書式設定した文字列を返します。</returns> public static string Format(this string @this, object arg0) { return string.Format(@this, arg0); } /// <summary> /// Format の簡易版。インスタンスメソッドのように使用できます。 (string.Format(format, args) が format.Format(args) で呼び出せます。) /// </summary> /// <param name="this">複合書式設定文字列</param> /// <param name="args">0 個以上の書式設定対象オブジェクトを含んだオブジェクト配列</param> /// <returns>書式設定した文字列を返します。</returns> public static string Format(this string @this, params object[] args) { return string.Format(@this, args); } |
IfNullOrEmpty メソッド
Nullまたは長さ0の文字列の場合に、指定した初期値に置換した値を取得できるメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/// <summary> /// Null または空文字列かどうかを判定し、Null の場合は指定した置換文字列に置き換えます。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="replacementValue">Null または空文字列の場合に置換する文字列</param> /// <returns>Null または空文字列の場合は replacementValue を返します。その他は @this を返します。</returns> public static string IfNullOrEmpty(this string @this, string replacementValue) { if (string.IsNullOrEmpty(@this)) { return replacementValue; } return @this; } |
IfNullOrWhiteSpace メソッド
Nullまたは空白文字列の場合に、指定した初期値に置換した値を取得できるメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/// <summary> /// Null または空白かどうかを判定し、Null の場合は指定した置換文字列に置き換えます。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="replacementValue">Null または空白の場合に置換する文字列</param> /// <returns>Null または WhiteSpace の場合は replacementValue を返します。その他は @this を返します。</returns> public static string IfNullOrWhiteSpace(this string @this, string replacementValue) { if (string.IsNullOrWhiteSpace(@this)) { return replacementValue; } return @this; } |
IsAlphabet メソッド
文字列がアルファベット1文字であるかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// アルファベット文字かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>アルファベット文字であれば true を返します。</returns> public static bool IsAlphabet(this string @this) { return Regex.IsMatch(@this, "^[a-zA-Z]{1}$"); } |
IsAlphabetOrDigit メソッド
文字列がアルファベットまたは数字の1文字であるかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 英数字かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>英数字であれば true を返します。</returns> public static bool IsAlphabetOrDigit(this string @this) { return !Regex.IsMatch(@this, "^[a-zA-Z0-9]{1}"); } |
IsAlphabets メソッド
文字列がアルファベットで構成された文字列であるかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// アルファベット文字列かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>アルファベット文字列であれば true を返します。</returns> public static bool IsAlphabets(this string @this) { return Regex.IsMatch(@this, "^[a-zA-Z]+$"); } |
IsAlphaNumeric メソッド
文字列がアルファベットまたは数字で構成された文字列であるかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 英数字文字列かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>英数字文字列であれば true を返します。</returns> public static bool IsAlphaNumeric(this string @this) { return !Regex.IsMatch(@this, "^[a-zA-Z0-9]+"); } |
IsDate メソッド
日付を表す文字列が日付として正しいかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/// <summary> /// 文字列が日付かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>日付であれば true を返します。</returns> public static bool IsDate(this string @this) { if (string.IsNullOrWhiteSpace(@this)) { return false; } // 8桁の数字文字列 Regex regex = new Regex("[0-9]{8}"); if (regex.IsMatch(@this)) { return DateTime.TryParseExact(@this, "yyyyMMdd", null, DateTimeStyles.None, out DateTime result); } return DateTime.TryParse(@this, out DateTime d); } |
IsDateTime メソッド
日付と時刻を表す文字列が日時として正しいかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 文字列が日時かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>日時であれば true を返します。</returns> public static bool IsDateTime(this string @this) { return DateTime.TryParse(@this, out DateTime d); } |
IsDigit メソッド
文字列が数字1文字であるかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 数字かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>数字であれば true を返します。</returns> public static bool IsDigit(this string @this) { return Regex.IsMatch(@this, "^[0-9]{1}$"); } |
IsEmpty メソッド
文字列が長さ0の文字列かどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 空文字列かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>空文字列であれば true を返します。</returns> public static bool IsEmpty(this string @this) { return @this == ""; } |
IsInteger メソッド
整数を表す文字列かどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 整数かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>整数であれば true を返します。</returns> public static bool IsInteger(this string @this) { return Regex.IsMatch(@this, "^-*[0-9]+$"); } |
IsNotEmpty メソッド
文字列が長さ1以上の文字列かどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 空文字列でないかどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>空文字列でなければ true を返します。</returns> public static bool IsNotEmpty(this string @this) { return @this != ""; } |
IsNotNullAndEmpty メソッド
文字列がNullでも長さ0の文字列でもないかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// Null および空文字列でないかどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>Null または空文字列でなければ true を返します。</returns> public static bool IsNotNullAndEmpty(this string @this) { return !string.IsNullOrEmpty(@this); } |
IsNotNullAndWhiteSpace メソッド
文字列がNullでも空白文字列でもないかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// Null および空白でないかどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>Null または空白でなければ true を返します。</returns> public static bool IsNotNullAndWhiteSpace(this string @this) { return !string.IsNullOrWhiteSpace(@this); } |
IsNullOrEmpty メソッド
インスタンスメソッドのように使用できるIsNullOrEmptyメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// IsNullOrEmpty の簡易版。インスタンスメソッドのように使用できます。 (string.IsNullOrEmpty(@this) が @this.IsNullOrEmpty() で呼び出せます。) /// </summary> /// <param name="this">対象の文字列</param> /// <returns>Null または空文字列であれば true を返します。</returns> public static bool IsNullOrEmpty(this string @this) { return string.IsNullOrEmpty(@this); } |
IsNullOrWhiteSpace メソッド
インスタンスメソッドのように使用できるIsNullOrWhiteSpaceメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// IsNullOrWhiteSpace の簡易版。インスタンスメソッドのように使用できます。 (string.IsNullOrWhiteSpace(@this) が @this.IsNullOrWhiteSpace() で呼び出せます。) /// </summary> /// <param name="this">対象の文字列</param> /// <returns>Null または空白であれば true を返します。</returns> public static bool IsNullOrWhiteSpace(this string @this) { return string.IsNullOrWhiteSpace(@this); } |
IsNumber メソッド
自然数(0以上の整数)を表す文字列かどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 自然数かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>自然数であれば true を返します。</returns> public static bool IsNumber(this string @this) { return Regex.IsMatch(@this, "^[0-9]+$"); } |
IsNumeric メソッド
数値(10進数)を表す文字列かどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 文字列が数値かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>数値であれば true を返します。</returns> public static bool IsNumeric(this string @this) { return decimal.TryParse(@this, out decimal d); } |
IsTime メソッド
時刻を表す文字列が時刻として正しいかどうかを判定するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
/// <summary> /// 文字列が時刻かどうかを判定します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>時刻であれば true を返します。</returns> public static bool IsTime(this string @this) { if (string.IsNullOrWhiteSpace(@this)) { return false; } // 6桁の数字文字列 Regex regex6 = new Regex("[0-9]{6}"); if (regex6.IsMatch(@this)) { @this = $"{@this.Substring(0, 2)}:{@this.Substring(2, 2)}:{@this.Substring(4, 2)}"; } else { // 4桁の数字文字列 Regex regex4 = new Regex("[0-9]{4}"); if (regex4.IsMatch(@this)) { @this = $"{@this.Substring(0, 2)}:{@this.Substring(2, 2)}"; } } string datetime = $"2000/1/1 {@this}"; return DateTime.TryParse(datetime, out DateTime d); } |
Left メソッド
文字列の先頭から指定した文字数の文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 |
/// <summary> /// 文字列の左から指定した桁数の文字列を取得します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="length">桁数</param> /// <returns>左から指定した桁数の文字列を返します。</returns> public static string Left(this string @this, int length) { return string.IsNullOrEmpty(@this) || @this.Length < length ? @this : @this.Substring(0, length); } |
LengthB メソッド
文字列の長さをバイト数で取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 |
/// <summary> /// 文字列のバイト数を取得します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>バイト数を返します。</returns> public static int LengthB(this string @this) { Encoding enc = Encoding.GetEncoding("Shift_JIS"); int length = enc.GetByteCount(@this); return length; } |
PerentPath メソッド
パスを表す文字列の親のパスまでの文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/// <summary> /// 親のパスを取得します。 /// </summary> /// <param name="this">パス文字列</param> /// <param name="pathSeparator">パス区切り文字</param> /// <returns>親のパス</returns> public static string PerentPath(this string @this, string pathSeparator = "\\") { int startIndex = @this.Length - 1; if (@this.EndsWith(pathSeparator)) { startIndex--; } var index = @this.LastIndexOf(pathSeparator, startIndex); if (index == -1) { return ""; } return @this.Substring(0, index); } |
Remove メソッド
文字列を削除するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/// <summary> /// 文字列から指定した文字列 (複数指定可能) を削除します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="removeValues">削除する文字列の配列</param> /// <returns>削除した結果の文字列を返します。</returns> public static string Remove(this string @this, params string[] removeValues) { string resultValue = @this; foreach (string removeValue in removeValues) { resultValue = resultValue.Replace(removeValue, string.Empty); } return resultValue; } |
引数で指定するすべての文字列を現在の文字列から削除します。
「var result = “abcdefghijkl”.Append(“abc”, “ghi”, “jkl”);」で呼び出すと、戻り値は「def」になります。
Repeat メソッド
文字列を繰り返して重ねた文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 |
// Replicate => Repeat /// <summary> /// 文字列を指定回数繰り返した文字列を取得します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="repeatCount">繰り返す回数</param> /// <returns>指定した回数繰り返した文字列を返します。</returns> public static string Repeat(this string @this, int repeatCount) { return string.Concat(System.Linq.Enumerable.Repeat(@this, repeatCount)); } |
「var result = “0”.Append(5);」で呼び出すと、戻り値は「00000」になります。
「var result = “xyz”.Append(3);」で呼び出すと、戻り値は「xyzxyzxyz」になります。
ReplaceAll メソッド
一度に複数の文字列を置換できるメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/// <summary> /// 複数の文字列を一括で順番に置換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="replacementTuples">置換する値の組 (タプル)</param> /// <returns>置換後の文字列を返します。</returns> public static string ReplaceAll(this string @this, params (string oldValue, object newValue)[] replacementTuples) { var result = @this; foreach (var replacementTuple in replacementTuples) { result = result.Replace(replacementTuple.oldValue, replacementTuple.newValue.ToString()); } return result; } |
引数replacementTuplesにはValueTuple<string, object>をカンマ区切りまたは配列で指定できます。
「var result = “あいうえおかきくけこ”.Replace(“うえ”, “した”).Replace(“かき”, “ももくり”);」を
「var result = “あいうえおかきくけこ”.ReplaceAll((“うえ”, “した”), (“かき”, “ももくり”));」で呼び出せます。
ReplaceBrTagToCrLf メソッド
brタグを表す文字列を改行に変換した文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// br タグを改行に置換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>置換後の文字列を返します。</returns> public static string ReplaceBrTagToCrLf(this string @this) { return @this.Replace("<br />", "\r\n").Replace("<br>", "\r\n"); } |
ReplaceCrLfToBrTag メソッド
改行をbrタグを表す文字列に変換した文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 |
/// <summary> /// 改行を br タグに置換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="isXhtml">XHTML 形式にする (br タグに / を付ける) かどうか</param> /// <returns>置換後の文字列を返します。</returns> public static string ReplaceCrLfToBrTag(this string @this, bool isXhtml = false) { string br = isXhtml ? "<br />" : "<br>"; return @this.Replace("\r\n", br).Replace("\r", br).Replace("\n", br); } |
引数isXhtmlをtrueにすると「<br />」falseにすると「<br>」に変換されます。
Right メソッド
文字列の末尾から指定した文字数の文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 |
/// <summary> /// 文字列の右から指定した桁数の文字列を取得します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="length">桁数</param> /// <returns>右から指定した桁数の文字列を返します。</returns> public static string Right(this string @this, int length) { return string.IsNullOrEmpty(@this) ? @this : @this.Substring(@this.Length - length); } |
SaveAs メソッド
テキストファイルに文字列を保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/// <summary> /// 文字列を名前を付けて保存します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="fileName">ファイル名</param> /// <param name="append">ファイルに追加するかどうか (true: 追加, false: 上書き)</param> public static void SaveAs(this string @this, string fileName, bool append = false, Encoding encoding = null) { if (null == encoding) { encoding = Encoding.Default; } using (TextWriter tw = new StreamWriter(fileName, append, encoding)) { tw.Write(@this); } } |
Split メソッド
文字列を分割して配列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/// <summary> /// 指定した区切り文字で分割した値を配列に格納します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="separator">区切り文字</param> /// <param name="options">配列に空文字列を含む要素を格納するかどうかを示す値</param> /// <returns>区切り文字列で分割して配列に格納した結果を返します。</returns> public static string[] Split(this string @this, string separator, StringSplitOptions options = StringSplitOptions.None) { return @this.Split(new[] { separator }, options); } /// <summary> /// 分割する回数と区切り文字を指定して分割した値を配列に格納します。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="separator">区切り文字列</param> /// <param name="count">区切り文字で分割する回数</param> /// <param name="options">配列に空文字列を含む要素を格納するかどうかを示す値</param> /// <returns>区切り文字列で分割して配列に格納した結果を返します。</returns> public static string[] Split(this string @this, string separator, int count, StringSplitOptions options = StringSplitOptions.None) { return @this.Split(new[] { separator }, count, options); } |
ToBooleanOrNull メソッド
bool型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の Boolean に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の byte を返します。</returns> public static bool? ToBooleanOrNull(this string @this) { if (bool.TryParse(@this, out bool result)) { return result; } return null; } |
ToByteArray メソッド
バイト配列に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/// <summary> /// バイト配列に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換後のバイト配列を返します。</returns> public static byte[] ToByteArray(this string @this, Encoding encoding = null) { if (encoding == null) { encoding = Encoding.Default; } return encoding.GetBytes(@this); } |
ToByteOrNull メソッド
byte型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の Byte に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の byte を返します。</returns> public static byte? ToByteOrNull(this string @this) { if (byte.TryParse(@this, out byte result)) { return result; } return null; } |
ToDateTimeOrNull メソッド
DateTime型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の DateTime に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の DateTime を返します。</returns> public static DateTime? ToDateTimeOrNull(this string @this) { if (DateTime.TryParse(@this, out DateTime result)) { return result; } return null; } |
ToDecimalOrNull メソッド
decimal型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の Decimal に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の decimal を返します。</returns> public static decimal? ToDecimalOrNull(this string @this) { if (decimal.TryParse(@this, out decimal result)) { return result; } return null; } |
ToDirectoryInfo メソッド
ディレクトリー(フォルダー)を表す文字列からDirectoryInfoオブジェクトを取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 文字列をディレクトリ―のパスとして DirectoryInfo にします。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>DirectoryInfo を返します。</returns> public static DirectoryInfo ToDirectoryInfo(this string @this) { return new DirectoryInfo(@this); } |
ToDoubleOrNull メソッド
double型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の Double に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の double を返します。</returns> public static double? ToDoubleOrNull(this string @this) { if (double.TryParse(@this, out double result)) { return result; } return null; } |
ToFileInfo メソッド
ファイルを表す文字列からDirectoryInfoオブジェクトを取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 文字列をファイルのパスとして FileInfo にします。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>FileInfo を返します。</returns> public static FileInfo ToFileInfo(this string @this) { return new FileInfo(@this); } |
ToInt16OrNull メソッド
short型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の Int16 に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の Int16 を返します。</returns> public static short? ToInt16OrNull(this string @this) { if (short.TryParse(@this, out short result)) { return result; } return null; } |
ToInt32OrNull メソッド
int型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の Int32 に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の Int32 を返します。</returns> public static int? ToInt32OrNull(this string @this) { if (int.TryParse(@this, out int result)) { return result; } return null; } |
ToInt64OrNull メソッド
long型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の Int64 に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の Int64 を返します。</returns> public static long? ToInt64OrNull(this string @this) { if (long.TryParse(@this, out long result)) { return result; } return null; } |
ToMemoryStream メソッド
メモリーストリームオブジェクトに変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/// <summary> /// ストリームに変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換後のメモリーストリームを返します。</returns> public static Stream ToMemoryStream(this string @this, Encoding encoding = null) { if (encoding == null) { encoding = Encoding.Default; } return new MemoryStream(encoding.GetBytes(@this)); } |
ToSByteOrNull メソッド
sbyte型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の SByte に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の sbyte を返します。</returns> public static sbyte? ToSByteOrNull(this string @this) { if (sbyte.TryParse(@this, out sbyte result)) { return result; } return null; } |
ToSingleOrNull メソッド
float型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の Single に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の Float を返します。</returns> public static float? ToSingleOrNull(this string @this) { if (float.TryParse(@this, out float result)) { return result; } return null; } |
ToUInt16OrNull メソッド
ushort型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の UInt16 に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の UInt16 を返します。</returns> public static ushort? ToUInt16OrNull(this string @this) { if (ushort.TryParse(@this, out ushort result)) { return result; } return null; } |
ToUInt32OrNull メソッド
uint型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の UInt32 に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の UInt32 を返します。</returns> public static uint? ToUInt32OrNull(this string @this) { if (uint.TryParse(@this, out uint result)) { return result; } return null; } |
ToUInt64OrNull メソッド
ulong型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/// <summary> /// 文字列を Null 許容値型の UInt64 に変換します。 /// </summary> /// <param name="this">対象の文字列</param> /// <returns>変換できない場合は null を返します。変換できる場合は変換後の UInt64 を返します。</returns> public static ulong? ToUInt64OrNull(this string @this) { if (ulong.TryParse(@this, out ulong result)) { return result; } return null; } |
Truncate メソッド
文字数を指定して文字列を切り詰めた文字列を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/// <summary> /// 指定された長さに文字列を切り捨てます。 /// </summary> /// <param name="this">対象の文字列</param> /// <param name="maxLength">最大長</param> /// <param name="suffix">サフィックス</param> /// <returns>切り捨てた文字列</returns> public static string Truncate(this string @this, int maxLength, string suffix = "...") { if (@this == null || @this.Length <= maxLength) { return @this; } int strLength = maxLength - suffix.Length; return @this.Substring(0, strLength) + suffix; } |
デフォルトのサフィックスは「…」になりますので、引数suffixを省略すると「あいうえおかきくけこさしす…」のような文字列が取得できます。
YyyymmddToDate メソッド
日付を表す8桁の数字文字列をDataTime型に変換した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// yyyyMMdd 形式の文字列を日付型に変換します。 /// </summary> /// <param name="this">yyyyMMdd 形式の文字列</param> /// <returns>変換後の日付を返します。</returns> public static DateTime YyyymmddToDate(this string @this) { return DateTime.ParseExact(@this, "yyyyMMdd", null); } |
今後も文字列の拡張メソッドが貯まってきたら随時追加していきます。
参考記事
日付と時間の拡張メソッドについては、以下の記事をご参照ください。
10進数の拡張メソッドについては、以下の記事をご参照ください。
倍精度浮動小数点数の拡張メソッドについては、以下の記事をご参照ください。
コレクションの拡張メソッドについては、以下の記事をご参照ください。