Как я могу разделить строку с разделителем строк?

У меня есть эта строка:

My name is Marco and I'm from Italy

Я хотел бы разделить его, с разделителем is Marco and, поэтому я должен получить массив с

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

Как я могу сделать это с С#?

Я пробовал с:

.Split("is Marco and")

Но он хочет только один символ.

Ответ 1

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

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

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

Ответ 2

.Split(new string[] { "is Marco and" }, StringSplitOptions.None)

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

Ответ 3

Вы разбиваете строку на довольно сложную подстроку. Я бы использовал регулярные выражения вместо 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");

Ответ 4

Попробуйте эту функцию вместо этого.

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

Ответ 5

Вы можете использовать метод 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);
    }
  }
}