Domanda
Come posso ottenere la stringa all'interno di una parentesi con una funzione personalizzata?
e.x. la stringa "Grecia (+30)" deve restituire "+30" solo
Soluzione
Ci sono alcuni modi diversi.
metodi delle stringhe Plain:
Dim left As Integer = str.IndexOf('(')
Dim right As Integer= str.IndexOf(')')
Dim content As String = str.Substring(left + 1, right - left - 1)
Espressione regolare:
Dim content As String = Regex.Match(str, "\((.+?)\)").Groups[1].Value
Altri suggerimenti
Per il problema generale, suggerirei usando Regex
. Tuttavia, se si è sicuri sul formato della stringa di input (un solo set di parentesi, parentesi aperte prima di chiudere parentesi tonda), questo dovrebbe funzionare:
int startIndex = s.IndexOf('(') + 1;
string result = s.Substring(startIndex, s.LastIndexOf(')') - startIndex);
Dim result as String = System.Text.RegularExpressions.Regex.Match("GREECE (+30)", "\((?<Result>[^\)]*)\)").Groups["Result"].Value;
Il codice non è testato, ma mi aspetto problemi solo di compilazione.
Si potrebbe guardare a espressioni regolari, o comunque giocare con la funzione IndexOf()
In Python, utilizzando il metodo indice di corda e affettare:
>>> s = "GREECE(+30)"
>>> s[s.index('(')+1:s.index(')')]
'+30'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow