2012-01-19 22 views
166

thể trùng lặp:
How do I split a string by a multi-character delimiter in C#?Làm cách nào để phân tách chuỗi bằng dấu phân tách chuỗi?

Tôi có chuỗi này:

My name is Marco and I'm from Italy 

Tôi muốn chia nó, với delimiter is Marco and, vì vậy tôi sẽ nhận được một mảng với

  • My name tại [0] và
  • I'm from Italy tại [1].

Tôi có thể làm điều đó bằng C# bằng cách nào?

Cố gắng với

.Split("is Marco and") 

nhưng nó muốn chỉ là một char duy nhất.

+4

[này] (http://stackoverflow.com/questions/1126915/how -do-i-chia-một-chuỗi-bởi-một-đa-ký tự-delimiter-in-c) đã được hỏi trước. –

+0

liên quan https://stackoverflow.com/questions/315358/c-sharp-syntax-split-string-into-array-by-comma-convert-to-generic-list-and – barlop

Trả lời

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

Nếu bạn có một dấu phân tách ký tự đơn (ví dụ: ,), bạn có thể giảm điều đó thành (chú ý một dấu nháy đơn):

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

bạn có thể xóa 'string':' .Split (new [] {"là Marco và"}, StringSplitOptions.None) ' – pomber

+4

' chuỗi mới [] 'là thừa trong trường hợp đó, bạn có thể sử dụng 'new []' – pomber

+4

Lưu ý các dấu nháy đơn trong str.Split (','); thay vì str.Split (","); Tôi mất một thời gian để thông báo – gsubiran

4

Bạn có thể sử dụng phương thức IndexOf để lấy vị trí của chuỗi và chia tách vị trí đó bằng vị trí đó và độ dài của chuỗi tìm kiếm.


Bạn cũng có thể sử dụng cụm từ thông dụng. Một đơn giản google search hóa ra với điều này

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); 
    } 
    } 
} 
22
.Split(new string[] { "is Marco and" }, StringSplitOptions.None) 

Hãy xem xét các không gian surronding "is Marco and". Bạn có muốn bao gồm các khoảng trống trong kết quả của mình hay bạn muốn chúng bị xóa không? Đó là hoàn toàn có thể mà bạn muốn sử dụng " is Marco and " như tách ...

8

Hãy thử this function để thay thế.

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

Bạn đang tách một chuỗi trên chuỗi con khá phức tạp. Tôi muốn sử dụng biểu thức chính quy thay vì String.Split. Sau đó là nhiều hơn cho tokenizing bạn văn bản.

Ví dụ:

var rx = new System.Text.RegularExpressions.Regex("is Marco and"); 
var array = rx.Split("My name is Marco and I'm from Italy"); 
3

đọc này: http://www.dotnetperls.com/split và các giải pháp có thể được cái gì đó như:

var results = yourString.Split(new string[] { "is Marco and" }, StringSplitOptions.None); 
Các vấn đề liên quan