简化了c#indexof条件中的许多可能性
本文关键字:许多 可能性 条件 c#indexof | 更新日期: 2023-09-27 17:57:58
有什么方法可以简化这段代码吗?输入是一个字符串。
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;
}
谢谢。
使用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";
}
使用Linq:
var types = new List<string> { ".jpg", ".png", ... };
if (types.Any(t => URI_obrazku.IndexOf(t) >= 0))
{
return someString;
}
是,使用数组
var values = new [] { ".jpg",".png",".bmp", ...};
if(values.Any(x => URI_obrazku.EndsWith(x)))
我不知道这是否更好,但我敢打赌它更快,因为它没有执行多个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;
}
}