私はこの文字列を持っています:
My name is Marco and I'm from Italy
区切り文字is Marco and
で分割したいので、次のようにして配列を取得します。
My name
at [0]そしてI'm from Italy
。C#ではどうすればいいですか。
私は試してみました:
.Split("is Marco and")
しかし、それは一文字しか欲しくありません。
string[] tokens = str.Split(new[] { "is Marco and" }, StringSplitOptions.None);
単一文字の区切り文字がある場合(例えば,
のように)、それを(一重引用符に注意してください)に減らすことができます。
string[] tokens = str.Split(',');
.Split(new string[] { "is Marco and" }, StringSplitOptions.None)
"is Marco and"
の上にあるスペースを考えてみましょう。結果にスペースを含めますか?それとも削除しますか? " is Marco and "
を区切り文字として使用したいという可能性は十分にあります...
かなり複雑な部分文字列で文字列を分割しています。 String.Splitの代わりに正規表現を使用したいと思います。後者はあなたのテキストをトークン化するためのものです。
例えば:
var rx = new System.Text.RegularExpressions.Regex("is Marco and");
var array = rx.Split("My name is Marco and I'm from Italy");
代わりに この関数 を試してください。
string source = "My name is Marco and I'm from Italy";
string[] stringSeparators = new string[] {"is Marco and"};
var result = source.Split(stringSeparators, StringSplitOptions.None);
IndexOf
メソッドを使用して文字列の位置を取得し、その位置と検索文字列の長さを使用して分割することができます。
正規表現を使うこともできます。単純な グーグル検索 これで判明
using System;
using System.Text.RegularExpressions;
class Program {
static void Main() {
string value = "cat\r\ndog\r\nanimal\r\nperson";
// Split the string on line breaks.
// ... The return value from Split is a string[] array.
string[] lines = Regex.Split(value, "\r\n");
foreach (string line in lines) {
Console.WriteLine(line);
}
}
}
読んでC#分割文字列の例 - Dot Net Perlsそして解決策は次のようになります。
var results = yourString.Split(new string[] { "is Marco and" }, StringSplitOptions.None);
文字列の配列とStringSplitOptions
パラメータを取るstring.Split
のバージョンがあります。