我有方法
public static string UrlImageName(string name)
{
if (name.IndexOf("_180x140") <= 0)
{
var extPos = name.LastIndexOf(".");
return name.Substring(0, extPos) + "_180x140" + name.Substring(extPos, name.Length);
}
return name;
}
并查看
<div class="car-img">
<img src="@IKWelcomeScreenCellViewModel.UrlImageName(viewModel.SlideShowUrls[0])" />
</div>
名称就像这样"http://www.ua/Content/images/ik-main-page/Catalog.png"
我需要这个http://www.ua/Content/images/ik-main-page/Catalog_180x140.png
错误索引和长度必须引用字符串
中的位置答案 0 :(得分:0)
String.Substring()
函数将startingIndex作为第一个参数,将Length / number作为第二个参数提取。
替换它:
return name.Substring(0, extPos) + "_180x140" +
name.Substring(extPos, name.Length);
有了这个:
return name.Substring(0, extPos.Length - extPos) + "_180x140" +
name.Substring(extPos, name.Length - extPos);
答案 1 :(得分:0)
由于Substring
的第二个参数是长度,除非extPos
为0,否则每次都会失败:
name.Substring(extPos, name.Length);
将其更改为此,以便您只在期间选择字符串的部分。
name.Substring(extPos + 1, name.Length - extPos - 1);
或者,如果你想包含结果中的句号:
name.Substring(extPos, name.Length - extPos);
如果字符串中没有句号,你可能也想要额外的支票。
答案 2 :(得分:0)
extPos
是文件扩展名开始的位置。现在,如果要在扩展名之前插入_180x140
,可以使用不带长度的子字符串。
这将从extPos
位置开始执行字符串的剩余部分,并且您不需要任何计算来读取扩展名
public static string UrlImageName(string name)
{
if (name.IndexOf("_180x140") < 0)
{
var extPos = name.LastIndexOf(".");
return name.Substring(0, extPos) + "_180x140" + name.Substring(extPos);
}
return name;
}
答案 3 :(得分:0)
如果extPos
是,假设为5,字符串有10个字符,则以下行将从索引5剪辑到15,这超出了界限。
name.Substring(extPos, name.Length);
你应该这样做。
name.Substring(extPos, name.Length - extPos);
或简单地说,
name.Substring(extPos);
答案 4 :(得分:0)
我认为您正在寻找String.Insert
返回一个新字符串,在该字符串中,在此实例中的指定索引位置插入指定的字符串。
所以简单地使用
return name.Insert(extPos, "_180x140");
但是根据您的错误使用
return name.Substring(0, extPos) + "_180x140" + name.Substring(extPos);