Как вставить строку, чтобы получить ABC (A B C) из AAA (A B C) (ABC: abc)

#c#

#c#

Вопрос:

У меня есть строка типа "AAA( A B C) (ABC:abc)"

Я хотел бы разделить строку, например "AAA( A B C)" , как мы можем использовать String.Split() метод using?

Строка может быть AAA (ABC: abc) или AAA(A B C) BCD(X Y Z) (ABC: abc). Моя цель — разделить ее на 2 отдельные строки из (ABC: abc).

Надеюсь, это сделает его более понятным.

Комментарии:

1. Вы бы не использовали string.Split для этого.

2. Небольшая информация о том, почему вам нужна именно эта часть строки, поможет определить хороший метод для этого.

Ответ №1:

Ну, вы можете использовать Split и Join для этого, но это некрасиво и неэффективно:

 string input = "AAA( A B C) (ABC:abc)";
string result = String.Join(" ", input.Split(' ').Take(4).ToArray())
 

Альтернативой было бы использовать LastIndexOf для поиска последнего пробела:

 string result = input.Substring(0, input.LastIndexOf(' '));
 

Ответ №2:

Если я понимаю, что вам нужно, вы могли бы использовать:

 string s = "AAA( A B C) (ABC:abc)";
string t = s.Substring(0, s.IndexOf(')')   1);
 

Комментарии:

1. Почему понижающий голос? В чем причина? Что-то не так с моим кодом? Пожалуйста, объясните, чтобы я мог исправить свою ошибку или удалить этот пост!!

Ответ №3:

Regex.Split — лучший вариант в этом случае.

 var pattern = @"(?<=)) (?=()";
var input = "AAA( A B C) (ABC:abc)";

var parts = Regex.Split(input, pattern);

Assert.AreEqual("AAA( A B C)", parts[0]);
 

Если ваша строка вообще изменяет длину, например:

ААААААА (A B C D) (ABCD:abcd)

Это регулярное выражение все равно будет соответствовать частям AAAAAAA( A B C D) и (ABCD:abcd)

Ответ №4:

 "AAA( A B C) (ABC:abc)".Split(new[] { ") (" }, StringSplitOptions.None);