2012-01-19 2 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, так что я должен получить массив с

  • My name по [0] и
  • I'm from Italy в [1].

Как я могу это сделать с помощью 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); 

Если у вас есть разделитель одного символа (например, ,), вы можете уменьшить это (обратите внимание на одинарные кавычки):

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

вы можете удалить 'string':' .Split (new [] {"is Marco and"}, StringSplitOptions.None) ' – pomber

+4

' new string [] 'избыточно в этом случае, вы могли бы просто use 'new []' – pomber

+4

Обратите внимание на одинарные кавычки в str.Split (','); вместо str.Split (","); Мне потребовалось некоторое время, чтобы заметить – gsubiran

4

Вы можете использовать метод IndexOf, чтобы получить местоположение строки и разбить его с использованием этой позиции и длины строки поиска.


Вы также можете использовать регулярное выражение. Простой google search получилось с этим

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) 

Рассмотрим пространства Больё "is Marco and". Вы хотите включить пробелы в свой результат или хотите удалить их? Вполне возможно, что вы хотите использовать в качестве разделителя " is Marco and " ...

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); 
Смежные вопросы