2009-07-04 9 views
0

Comment puis-je obtenir la chaîne entre parenthèses avec une fonction personnalisée?Fonction chaîne de sous-chaîne

e.x. la chaîne "GRÈCE (+30)" devrait retourner "+30" seulement

+2

Je dirais que les expressions régulières sont capables de le faire. – luiscubal

Répondre

5

Il existe plusieurs façons.

méthodes de cordes lisses:

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

Expression régulière:

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

Pour le problème général, je suggère d'utiliser Regex. Toutefois, si vous êtes sûr du format de la chaîne d'entrée (un seul ensemble de parens, paren ouvert avant paren à proximité), cela fonctionne:

int startIndex = s.IndexOf('(') + 1; 
string result = s.Substring(startIndex, s.LastIndexOf(')') - startIndex); 
0

Vous pouvez regarder une des expressions régulières, ou autrement jouer avec le IndexOf() fonction

1

Avec regular expressions.

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

Le code n'a pas été testé, mais je m'attends à des problèmes de compilation.

0

En Python, en utilisant la méthode d'index de chaîne et tranchage:

>>> s = "GREECE(+30)" 
>>> s[s.index('(')+1:s.index(')')] 
'+30' 
Questions connexes