Asp.net mvc 货币兑换发行

Asp.net mvc 货币兑换发行,asp.net-mvc,c#-4.0,Asp.net Mvc,C# 4.0,我有一门课,现在可以帮助将美元转换成印度卢比,现在给出的错误是: 指定的参数超出了有效值的范围 在这一行代码行: var result = Regex.Matches(streamReader.ReadToEnd(), "<span class=\"?bld\"?>([^<]+)</span>")[0].Groups[1].Value; var result=Regex.Matches(streamReader.ReadToEnd(),”([^您使用的URL不正确

我有一门课,现在可以帮助将美元转换成印度卢比,现在给出的错误是:

指定的参数超出了有效值的范围

在这一行代码行:

var result = Regex.Matches(streamReader.ReadToEnd(), "<span class=\"?bld\"?>([^<]+)</span>")[0].Groups[1].Value;

var result=Regex.Matches(streamReader.ReadToEnd(),”([^您使用的URL不正确。它会导致重定向到
http://finance.google.com/finance/
这意味着它没有执行转换。如果查看返回的流数据,它没有匹配正则表达式的匹配
span
。如果您将URL设置为
http://finance.google.com

static void Main(string[] args)
{
     int amount = 100;
     string from = "USD";
     string to = "INR";
     var result = CurrencyConvert(amount, from, to);
     Console.WriteLine($"Conversion of {amount} from {from} to {to} equals {result}");
}

public static decimal CurrencyConvert(decimal amount, string fromCurrency, string toCurrency)
{
     //Grab your values and build your Web Request to the API
     string apiURL = String.Format("http://finance.google.com/finance/converter?a={0}&from={1}&to={2}&meta={3}", amount, fromCurrency, toCurrency, Guid.NewGuid().ToString());
     //Make your Web Request and grab the results
     var request = WebRequest.Create(apiURL);         
     //Get the Response
     var streamReader = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.ASCII);
     //Grab your converted value (ie 2.45 USD)
     var streamData = streamReader.ReadToEnd();
     var result = Regex.Matches(streamData, "<span class=\"?bld\"?>([^<]+)</span>")[0].Groups[1].Value;
     //Get the Result
     return Convert.ToDecimal(result.Replace(" INR", ""));
}
static void Main(字符串[]args)
{
整数金额=100;
字符串from=“USD”;
字符串至=“INR”;
var结果=CurrencyConvert(金额,从,到);
WriteLine($“将{amount}从{from}转换为{to}等于{result}”);
}
公共静态十进制货币转换(十进制金额、字符串fromCurrency、字符串toCurrency)
{
//获取您的值并构建对API的Web请求
字符串apiURL=string.Format(“http://finance.google.com/finance/converter?a={0}&from={1}&to={2}&meta={3}”,金额,fromCurrency,toCurrency,Guid.NewGuid().ToString());
//提出Web请求并获取结果
var request=WebRequest.Create(apirl);
//得到回应
var streamReader=newstreamreader(request.GetResponse().GetResponseStream(),Encoding.ASCII);
//获取您的转换值(即2.45美元)
var streamData=streamReader.ReadToEnd();

var result=Regex.Matches(streamData)([^streamReader.ReadToEnd()
返回什么?这是解释为什么Regex与您想要的不完全匹配,因此没有足够的匹配项或组的关键。var result=Regex.Matches(streamReader.ReadToEnd(),)([^是的,但是您的流包含什么?
var str=streamReader.ReadToEnd();
并检查
str
的值。
指定的参数超出了有效值的范围。
似乎是streamReader.ReadToEnd()返回null或空。谢谢stephen我想你的url在正常工作之前已经更改了。你能告诉我如何知道url在将来是否会更改吗?在caseholl@stephen.vakil中,我的问题再次面临,我知道任何解决方案都会被修复,不会再次出现
static void Main(string[] args)
{
     int amount = 100;
     string from = "USD";
     string to = "INR";
     var result = CurrencyConvert(amount, from, to);
     Console.WriteLine($"Conversion of {amount} from {from} to {to} equals {result}");
}

public static decimal CurrencyConvert(decimal amount, string fromCurrency, string toCurrency)
{
     //Grab your values and build your Web Request to the API
     string apiURL = String.Format("http://finance.google.com/finance/converter?a={0}&from={1}&to={2}&meta={3}", amount, fromCurrency, toCurrency, Guid.NewGuid().ToString());
     //Make your Web Request and grab the results
     var request = WebRequest.Create(apiURL);         
     //Get the Response
     var streamReader = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.ASCII);
     //Grab your converted value (ie 2.45 USD)
     var streamData = streamReader.ReadToEnd();
     var result = Regex.Matches(streamData, "<span class=\"?bld\"?>([^<]+)</span>")[0].Groups[1].Value;
     //Get the Result
     return Convert.ToDecimal(result.Replace(" INR", ""));
}