2012-01-19 10 views
166

可能性の重複:
How do I split a string by a multi-character delimiter in C#?文字列区切り文字で文字列を分割するにはどうすればよいですか?

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

My name is Marco and I'm from Italy 

私は区切り文字is Marco andと、それを分割したいと思いますので、私は、配列を取得する必要があります

    [0]で
  • My nameと[1]で
  • I'm from Italyです。

C#でどうすればいいですか?

.Split("is Marco and") 

にしようとしたが、それは、単一の文字を望んでいます。

+4

[この](http://stackoverflow.com/questions/1126915/how -do-i-split-a-string-by-a-multi-character-delimiter-in-c)が以前に尋ねられました。 –

+0

関連するhttps://stackoverflow.com/questions/315358/c-sharp-syntax-split-string-into-array-by-comma-convert-to-generic-list-and – barlop

答えて

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

:それは文字列の配列とStringSplitOptionsパラメータを受け取りstring.Splitのバージョンがあります...あなたがセパレータとして" is Marco and "を使用することを

+0

'string'を削除することができます:' .Split(new [] {"はMarcoと"}、StringSplitOptions.None) ' – pomber

+4

'新しい文字列[] 'は冗長です。 'new []'を使用してください – pomber

+4

str.Split( '、');の一重引用符に注意してください。 str.Split( "、")の代わりに。 私は一言も引用するには少し時間がかかった – gsubiran

4

IndexOfメソッドを使用して文字列の位置を取得し、その位置と検索文字列の長さを使用して分割することができます。


正規表現を使用することもできます。シンプルgoogle search"is Marco and"をsurrondingスペースを考慮して、この

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); 
    } 
    } 
} 
3

かなり可能です単一の文字区切り記号(例:,のように)を減らすことができます(一重引用符に注意してください):

string[] tokens = str.Split(','); 
+1

いいえ、それは文字列の配列をとります。 –

+0

@atornblad - good catch –

8

代わりにthis functionを試してください。

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); 
15

かなり複雑なサブストリングに文字列を分割しています。私は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"); 
3

は、この読み:http://www.dotnetperls.com/split をし、解決策のようなものになります

var results = yourString.Split(new string[] { "is Marco and" }, StringSplitOptions.None); 
関連する問題