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