Ручная строка, разделенная на C #

В моем коде я пытаюсь манипулировать строкой:

Some text - 04.09.1996 - 40-18 

Я хотел бы разбить это на три подстроки: Some text , 04.09.1996 и 40-18 .

Когда я использую метод Split с дефисом в качестве разделителя, возвращаемое значение представляет собой массив из четырех строк: Some text , 04.09.1996 , 40 и 18 . Как я могу заставить этот код работать, как описано выше?

Благодарю.

Вы должны просто расколоться с пробелами - :

  .Split(new[] {" - "}, StringSplitOptions.RemoveEmptyEntries); 

См. Демонстрацию C #

 var res = "Some text - 04.09.1996 - 40-18".Split(new[] {" - "}, StringSplitOptions.RemoveEmptyEntries); foreach (var s in res) Console.WriteLine(s); 

Результат:

 Some text 04.09.1996 40-18 

Используйте эту перегрузку для разделения строк, чтобы получить только 3 части:

 var s = "Some text - 04.09.1996 - 40-18"; var parts = s.Split(new[] { '-' }, 3); 

Я предполагаю, что вы также хотите обрезать пространства:

 var parts = s.Split(new[] { '-' }, 3) .Select(p => p.Trim()); 

Я бы опасался появления «-» или «-» в «Некотором тексте», поскольку я предполагаю, что вас интересует это как владелец места. Если вы уверены, что «Некоторый текст» не будет содержать «-», то другие ответы здесь хорошие, простые и читаемые. В противном случае нам нужно полагаться на то, что, как мы знаем, является постоянным в строке. Мне кажется, что постоянная – это последние три дефиса. Поэтому я бы попытался разделить на «-» и поставить последнюю пару обратно вместе, как

 string input = "Some text - 04.09.1996 - 40-18"; string[] foo = input.Split(new[] { " - " }, StringSplitOptions.RemoveEmptyEntries); int length = foo.Length; string[] bar = new string[3]; //put "some text" back together for(int i=0; i< length - 3;i++) { bar[0] += foo[i]; } bar[1] = foo[length - 3]; bar[2] = foo[length - 2] + "-" + foo[length - 1]; 

В текущем случае вы можете использовать Split с дополнительным пространством, например

 string.Split(" - ") 

В терминах «хорошей практики» не может рекомендовать это решение.

Я заменяю последовательность символов «——————–» в вашей строке специальным символом «&», как показано ниже. а затем разделить с помощью специального символа “&”

  string str = "Hello, my- name -------------------- is Philip J. Fry -------------------- and i like cartoons".Replace("--------------------","&"); string[] ss=str.Split('&'); string result=ss[0] + "," + ss[1]+ "," +ss[2]; 

то строка вывода выглядит так: «Привет, мое имя, это Филипп Фрай, и мне нравятся мультфильмы»,