有没有办法简化这段代码?输入是一个字符串。
private string IfItIsPicture(string URI_obrazku)
{
if (URI_obrazku.IndexOf(".jpg") > -1 ||
URI_obrazku.IndexOf(".png") > -1 ||
URI_obrazku.IndexOf(".bmp") > -1 ||
URI_obrazku.IndexOf(".tiff") > -1 ||
URI_obrazku.IndexOf(".tif") > -1 ||
URI_obrazku.IndexOf(".jpeg") > -1 ||
URI_obrazku.IndexOf(".jpg") > -1 ||
URI_obrazku.IndexOf(".svg") > -1 ||
URI_obrazku.IndexOf(".gif") > -1)
{ ... some code }
return someString;
}
感谢。
答案 0 :(得分:2)
使用Path.GetExtension获取扩展程序。然后检查该扩展名是否在您已知扩展名的集合中。
private string IfItIsPicture(string URI_obrazku)
{
var knownExtensions = new [] { ".jpg",".png",".bmp", "..."};
var extension = Path.GetExtension(URI_obrazku);
if (knownExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
{
// ... some code
}
return "someString";
}
答案 1 :(得分:1)
使用Linq:
var types = new List<string> { ".jpg", ".png", ... };
if (types.Any(t => URI_obrazku.IndexOf(t) >= 0))
{
return someString;
}
答案 2 :(得分:0)
是的,使用数组
var values = new [] { ".jpg",".png",".bmp", ...};
if(values.Any(x => URI_obrazku.EndsWith(x)))
答案 3 :(得分:0)
我不知道这是否更好,但我打赌它更快,因为它没有做多个IndexOf:
private bool IsPicture(string URI_obrazku)
{
String Extension = Path.GetExtension(URI_obrazku);
switch (Extension)
{
case ".jpg": return true;
case ".png": return true;
// other extensions
default: return false;
}
}