web-dev-qa-db-ja.com

文字列を文字列区切り文字で分割するにはどうすればよいですか。

私はこの文字列を持っています:

My name is Marco and I'm from Italy

区切り文字is Marco andで分割したいので、次のようにして配列を取得します。

  • My name at [0]そして
  • [1]のI'm from Italy

C#ではどうすればいいですか。

私は試してみました:

.Split("is Marco and")

しかし、それは一文字しか欲しくありません。

215
markzzz
string[] tokens = str.Split(new[] { "is Marco and" }, StringSplitOptions.None);

単一文字の区切り文字がある場合(例えば,のように)、それを(一重引用符に注意してください)に減らすことができます。

string[] tokens = str.Split(',');
452
juergen d
.Split(new string[] { "is Marco and" }, StringSplitOptions.None)

"is Marco and"の上にあるスペースを考えてみましょう。結果にスペースを含めますか?それとも削除しますか? " is Marco and "を区切り文字として使用したいという可能性は十分にあります...

27
Anders Tornblad

かなり複雑な部分文字列で文字列を分割しています。 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");
17
Huusom

代わりに この関数 を試してください。

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);
12
DanTheMan

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);
    }
  }
}
8
Patrick

読んでC#分割文字列の例 - Dot Net Perlsそして解決策は次のようになります。

var results = yourString.Split(new string[] { "is Marco and" }, StringSplitOptions.None);
6

文字列の配列とStringSplitOptionsパラメータを取るstring.Splitのバージョンがあります。

http://msdn.Microsoft.com/ja-jp/library/tabh47cf.aspx

5
Charles Lambert