使用sprintf创建url会创建错误的url

时间:2013-08-12 09:31:35

标签: matlab url printf

我正在尝试使用sprintf创建一个ulr。为了打开各种网站,我使用sprintf更改了部分URL。现在下面的代码写了3次url instread替换部分网址????有什么建议吗?非常感谢!!

current_stock = 'AAPL';

current_url = sprintf('http://www.finviz.com/quote.ashx?t=%d&ty=c&ta=0&p=d',current_stock)
web(current_url, '-browser')

%d应该是appl的地方。结果是:

http://www.finviz.com/quote.ashx?t=65&ty=c&ta=0&p=dhttp://www.finviz.com/quote.ashx?t=65&ty=c&ta=0&p=dhttp://www.finviz.com/quote.ashx?t=80&ty=c&ta=0&p=dhttp://www.finviz.com/quote.ashx?t=76&ty=c&ta=0&p=d

2 个答案:

答案 0 :(得分:3)

我不确定为什么你使用%d作为明显是字符串的值?您应该使用%s

您看到所看到的内容的原因是,它似乎为您提供了AAPL字符串中每个字符的格式字符串副本。

您可以看到差异仅在?t=XX位,XX依次为65,65,80和76,字符串中四个字母的ASCII代码:

                                   vv
http://www.finviz.com/quote.ashx?t=65&ty=c&ta=0&p=d
http://www.finviz.com/quote.ashx?t=65&ty=c&ta=0&p=d
http://www.finviz.com/quote.ashx?t=80&ty=c&ta=0&p=d
http://www.finviz.com/quote.ashx?t=76&ty=c&ta=0&p=d
                                   ^^

这是MatLab (a)中的一个特性还是错误,我无法肯定地说,但我怀疑如果你只是使用正确的格式说明符它会自行解决。


(a)这可能是一个功能,因为它根据here执行与其他不匹配类似的智能操作:

  

如果将字符串转换(%s)应用于整数值,MATLAB会将对应于有效字符代码的值转换为字符。例如,'%s'会将[65 66 67]转换为ABC

答案 1 :(得分:0)

我会遵循这个简单的方法:

current_stock = 'AAPL';
current_url = ['http://www.finviz.com/quote.ashx?t=%d&ty=c&ta=0&p=d',current_stock];
web(current_url,'-browser')

将我重定向到有效的网页。