私はSplit()
メソッドを使って文字列を分割してきましたが、これは文字列を文字で分割している場合にのみうまくいくようです。別の文字列をパラメータで分割することで、string
を分割する方法はありますか?
幸運なことに、スプリッタを文字配列に変換してみました。
言い換えれば、私はstring
を分割したいのです。
THExxQUICKxxBROWNxxFOX
xx
を指定して、値を含む配列を返します。
THE、QUICK、BROWN、FOX
文字列で分割するには、 文字列配列のオーバーロード を使用する必要があります。
string data = "THExxQUICKxxBROWNxxFOX";
return data.Split(new string[] { "xx" }, StringSplitOptions.None);
分割のオーバーロードがあります それは文字列を取ります。
"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);
あなたはこれらのStringSplitOptionsのどちらかを使うことができます
そのため、文字列が "THExxQUICKxxxxBROWNxxFOX"の場合、StringSplitOptions.None
は配列内の "xxxx"部分の空のエントリを返しますが、StringSplitOptions.RemoveEmptyEntries
は返しません。
Regex.Split(string, "xx")
私が普通にやる方法です。もちろん必要です
using System.Text.RegularExpressions;
しかし、それでも私は常にそのライブラリが必要です。
String.Split のオーバーロードがあります。
"THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, StringSplitOptions.None);
私は一般的に私自身の拡張子を使うのが好きです。
string data = "THExxQUICKxxBROWNxxFOX";
var dataspt = data.Split("xx");
//>THE QUICK BROWN FOX
//the extension class must be declared as static
public static class StringExtension
{
public static string[] Split(this string str, string splitter)
{
return str.Split(new[] { splitter }, StringSplitOptions.None);
}
}
ただし、Microsoftが今後のバージョンでこのメソッドオーバーロードを含めることを決定した場合は、例外が発生します。マイクロソフトがこの方法を当面の間含めなかったのも、おそらくこのような理由によるものです。私が働いていた少なくとも1社が、すべてのC#プロジェクトでそのような拡張を使用していました。
メソッドが存在しない場合は、実行時に条件付きでメソッドを定義することも可能です。
前の答えはすべて正しいです。さらに一歩進んで、Stringに拡張メソッドを定義することでC#を機能させます。
public static string[] Split(this string toSplit, string splitOn) {
return toSplit.Split(new string[] { splitOn }, StringSplitOptions.None);
}
そのようにして私はこれを達成しようとした最初の時に素朴に期待した簡単な方法で任意の文字列でそれを呼び出すことができます:
"a big long string with stuff to split on".Split("g str");
string data = "THExxQUICKxxBROWNxxFOX";
return data.Replace("xx","|").Split('|');
置換文字を慎重に選択してください(すでに文字列に存在しない可能性が高いものを選択してください)。
これも簡単です。
string data = "THExxQUICKxxBROWNxxFOX";
string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
.NET Core 2.0以降では、文字列を受け取るオーバーライドがあります。
これで"THExxQUICKxxBROWNxxFOX".Split("xx")
を実行できます。