Bizonhando a documentação da Microsoft, achei um método nativo de String que também é muito útil! É o método String.Contains(string) Segue o código:
// Classe Extrator
internal class ExtratorValorDeArgumentosURL
{
public string URL { get; }
private readonly string argumentos;
public ExtratorValorDeArgumentosURL(string url)
{
if (String.IsNullOrWhiteSpace(url))
{
throw new ArgumentException("URL não pode ser vazio");
}
argumentos = url.Substring(url.IndexOf("?"));
URL = url;
}
public string GetValor(string parametroQueryString)
{
int indiceParametro = argumentos.IndexOf(parametroQueryString);
string valor = argumentos.Substring(indiceParametro+parametroQueryString.Length);
if (valor.Contains("&"))
{
valor = valor.Remove(valor.IndexOf("&"));
}
return valor;
}
}
// Program
class Program
{
static void Main(string[] args)
{
string url = "pagina?moedaOrigem=BRL&moedaDestino=USD";
Console.WriteLine(url.Substring(6));
Console.WriteLine(url.Substring(url.IndexOf("?")));
ExtratorValorDeArgumentosURL extrator = new ExtratorValorDeArgumentosURL(url);
Console.WriteLine(extrator.GetValor("moedaOrigem="));
Console.WriteLine(extrator.GetValor("moedaDestino="));
Console.ReadLine();
}
}