Функция подстроки строки

Как я могу получить строку в скобках с помощью пользовательской функции?

бывший. строка "ГРЕЦИЯ (+30)" должна возвращать только "+30"


person OrElse    schedule 04.07.2009    source источник
comment
Я бы сказал, что регулярные выражения способны на это.   -  person luiscubal    schedule 04.07.2009


Ответы (5)


Есть несколько разных способов.

Обычные строковые методы:

Dim left As Integer = str.IndexOf('(')
Dim right As Integer= str.IndexOf(')')
Dim content As String = str.Substring(left + 1, right - left - 1)

Регулярное выражение:

Dim content As String = Regex.Match(str, "\((.+?)\)").Groups[1].Value
person Guffa    schedule 04.07.2009

Для общей проблемы я бы предложил использовать Regex. Однако, если вы уверены в формате входной строки (только один набор скобок, открыть скобку перед закрытием скобки), это сработает:

int startIndex = s.IndexOf('(') + 1;
string result = s.Substring(startIndex, s.LastIndexOf(')') - startIndex);
person mmx    schedule 04.07.2009

С помощью регулярных выражений.

Dim result as String = System.Text.RegularExpressions.Regex.Match("GREECE (+30)", "\((?<Result>[^\)]*)\)").Groups["Result"].Value;

Код не тестировался, но я ожидаю только проблем с компиляцией.

person Mike Chaliy    schedule 04.07.2009

Вы можете посмотреть регулярные выражения или иным образом поиграть с функцией IndexOf()

person Rowland Shaw    schedule 04.07.2009

В Python, используя метод строкового индекса и нарезку:

>>> s = "GREECE(+30)"
>>> s[s.index('(')+1:s.index(')')]
'+30'
person Anon    schedule 04.07.2009