簡體   English   中英

如何檢查文件擴展名是大寫還是小寫?

[英]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)

您通常應該避免使用ToLowerToUpper才能執行比較,因為框架中的大多數字符串比較工具都提供某種形式的選項,允許您在忽略大小寫的情況下執行比較。

你根本不需要

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM