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
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
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
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);
Vous pouvez regarder une des expressions régulières, ou autrement jouer avec le IndexOf()
fonction
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.
En Python, en utilisant la méthode d'index de chaîne et tranchage:
>>> s = "GREECE(+30)"
>>> s[s.index('(')+1:s.index(')')]
'+30'
Je dirais que les expressions régulières sont capables de le faire. – luiscubal