Как разбить строку на многосимвольный разделитель на C #?

Что делать, если я хочу разбить строку, используя разделитель, который является словом?

Например, This is a sentence .

Я хочу расколоться и получить This и a sentence .

В Java я могу отправить строку как разделитель, но как это сделать на C# ?

http://msdn.microsoft.com/en-us/library/system.string.split.aspx

Пример из документов:

 string source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]"; string[] stringSeparators = new string[] {"[stop]"}; string[] result; // ... result = source.Split(stringSeparators, StringSplitOptions.None); foreach (string s in result) { Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s); } 

Вы можете использовать метод Regex.Split , что-то вроде этого:

 Regex regex = new Regex(@"\bis\b"); string[] substrings = regex.Split("This is a sentence"); foreach (string match in substrings) { Console.WriteLine("'{0}'", match); } 

Изменить : это соответствует примеру, который вы дали. Обратите внимание, что обычный String.Split также будет разбит на « is » в конце слова «This», поэтому я использовал метод Regex и включил границы слов вокруг « is ». Обратите внимание, однако, что если вы просто написали этот пример по ошибке, то, вероятно, будет достаточно String.Split .

Основываясь на существующих ответах на этом посту, это упрощает реализацию 🙂

 namespace System { public static class BaseTypesExtensions { ///  /// Just a simple wrapper to simplify the process of splitting a string using another string as a separator ///  ///  ///  ///  public static string[] Split(this string s, string separator) { return s.Split(new string[] { separator }, StringSplitOptions.None); } } } 
 string s = "This is a sentence."; string[] res = s.Split(new string[]{ " is " }, StringSplitOptions.None); for(int i=0; i 

EDIT: «is» дополняется с обеих сторон пробелами в массиве, чтобы сохранить тот факт, что вы хотите, чтобы слово «было» удалено из предложения, а слово «это» останется неповрежденным.

…Вкратце:

 string[] arr = "This is a sentence".Split(new string[] { "is" }, StringSplitOptions.None); 

Вы можете использовать String.Replace (), чтобы заменить нужную строку разделения символом, который не встречается в строке, а затем использовать String.Split для этого символа, чтобы разделить результирующую строку на тот же эффект.

Или используйте этот код; (тот же: новый String [])

 .Split(new[] { "Test Test" }, StringSplitOptions.None) 

Вот функция расширения для разделения с разделителем строк:

 public static string[] Split(this string value, string seperator) { return value.Split(new string[] { seperator }, StringSplitOptions.None); } 

Пример использования:

 string mystring = "one[split on me]two[split on me]three[split on me]four"; var splitStrings = mystring.Split("[split on me]"); 
 var dict = File.ReadLines("test.txt") .Where(line => !string.IsNullOrWhitespace(line)) .Select(line => line.Split(new char[] { '=' }, 2, 0)) .ToDictionary(parts => parts[0], parts => parts[1]); or enter code here line="[email protected][email protected]"; string[] tokens = line.Split(new char[] { '=' }, 2, 0); ans: tokens[0]=to token[1][email protected][email protected] 
 string strData = "This is much easier" int intDelimiterIndx = strData.IndexOf("is"); int intDelimiterLength = "is".Length; str1 = strData.Substring(0, intDelimiterIndx); str2 = strData.Substring(intDelimiterIndx + intDelimiterLength, strData.Length - (intDelimiterIndx + intDelimiterLength)); 
  • Как заменить все экземпляры строки другой строкой?
  • Как разбить строку на строки и включить разделители с помощью .NET?
  • Получить строку между двумя строками в строке
  • Как я могу безопасно преобразовать массив байтов в строку и обратно?
  • Обратное строковое слово Word в Word
  • Strip Byte Order Mark от строки в C #
  • Как написать обратную косую черту (\) в строке?
  • Сравните одну строку с несколькими значениями в одном выражении
  • Возникновение подстроки в строке
  • Как нарисовать линию направленной стрелки в Java?
  • Анализ текста на арабском / RTL слева направо
  • Interesting Posts

    ECC-плагин в материнской плате без ECC

    Почему объекты передачи данных (DTO) являются анти-шаблонами?

    Получить текст из буфера обмена с помощью GetText – избежать ошибки в пустом буфере обмена

    Как получить первый день номера данной недели в Java

    BCDEDIT: Должны ли параметры устройства и osdevice быть загрузочным или оконным разделом?

    Отображение данных Firebase в ListView

    Простой TextView.setText вызывает 40% использования ЦП

    Библиотека PDF для рендеринга файлов PDF в Android

    Как запустить все тесты JUnit в категории / комплекте с Ant?

    std :: ostringstream печатает адрес c-строки вместо своего содержимого

    Как передать аргумент unique_ptr конструктору или функции?

    Как отключить сенсорную панель нетбука при подключении мыши USB

    Android AudioRecord class – быстро запускает живой микрофон, настраивает функцию обратного вызова

    Запрос SOAP для WebService с помощью java

    Изменение строкового литерала

    Давайте будем гением компьютера.