[英]How can i check if the file extension is uppercase or lowercase?
我的代碼中有這一行:
if (address.EndsWith("GIF") || (address.EndsWith("BMP") || address.EndsWith("JPEG") || address.EndsWith("TIFF") || address.EndsWith("RAW") || address.EndsWith("PNG")))
例如,現在地址變量中的網址是:www.test.jpg然后它永遠不會進入IF並跳出/繼續。
我希望它在所有擴展名為大寫和小寫的例如“GIF”和“gif”我該怎么做?
(子問題如果我想檢查文件擴展名做EndsWith(“gif”就足夠了,或者我必須在它之前添加一個點,如“.gif”或像“.jpeg”?)
與目前為止的其他答案不同,我可能會堅持使用EndsWith
但切換到接受StringComparison
參數的重載 ,例如:
address.EndsWith("GIF",StringComparison.OrdinalIgnoreCase)
您通常應該避免使用ToLower
或ToUpper
才能執行比較,因為框架中的大多數字符串比較工具都提供某種形式的選項,允許您在忽略大小寫的情況下執行比較。
你根本不需要
address.ToLower().EndsWith("gif")
如果你真的需要
bool lowercase = address.ToLower() == address
你也可以清理你的代碼 - 我相信你應該把Damien的答案納入其中,但是不想從它到期的地方拿走信用。
var extensions = new string[]{"gif","jpg","something"};
if(extensions.Any(x => address.ToLower().EndsWith(x)))
對於小寫,您應該只轉換為較低,然后匹配結尾。
像這樣做
string temp = address.ToLower();
if (temp .EndsWith(".gif") || (temp .EndsWith(".bmp") || temp .EndsWith(".jpeg") || temp .EndsWith(".tiff") || temp .EndsWith(".raw") || temp .EndsWith(".png")))
對於你的子問題 ,
你需要添加.
在擴展中。 因為否則您的地址www.testgif將被視為有效地址。
使用Path.GetExtension
方法獲取擴展。
返回指定路徑字符串的擴展名。
string ext = Path.GetExtension(address);
然后檢查擴展名中的所有char是否為大寫。
public static bool IsAllCharLowerCase(string ext)
{
foreach(char c in ext)
{
if (char.IsUpper(c))
{
return false;
}
}
return true;
}
在評估之前,只需將所有擴展名更改為大寫,就像這樣
address.ToUpper().EndsWith("GIF") etc.
使用點進行檢查例如“.GIF”將更加確保它實際上是一個擴展,而不是例如以GIF結尾的擴展文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.