簡體   English   中英

C#正則表達式來驗證文件名

[英]C# regex to validate filename

我想用給定的文件名中的string.Empty: '"<>?*/\\|替換這些字符。如何使用Regex做到這一點,我已經嘗試過:

Regex r = new Regex("(?:[^a-z0-9.]|(?<=['\"]))", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
                 FileName = r.Replace(FileName, String.Empty);

但這會將所有特殊字符替換為String.Empty。

您可以使用Regex.Replace方法。 它按照其名稱所示進行操作。

Regex regex = new Regex(@"[\\'\\""\\<\\>\\?\\*\\/\\\\\|]");
var filename = "dfgdfg'\"<>?*/\\|dfdf";
filename = regex.Replace(filename, string.Empty);

但是我寧願為您當前正在使用的文件系統下文件名中禁止的所有字符清除它,不僅因為您可能忘記了某些內容,而且還不僅僅是在正則表達式中定義的字符:

private static readonly char[] InvalidfilenameCharacters = Path.GetInvalidFileNameChars();

public static string SanitizeFileName(string filename)
{
    return new string(
        filename
            .Where(x => !InvalidfilenameCharacters.Contains(x))
            .ToArray()
    );
}

接着:

var filename = SanitizeFileName("dfgdfg'\"<>?*/\\|dfdf");

看這里怎么做:

如何從路徑和文件名中刪除非法字符?

記得使用Path.GetInvalidFileNameChars()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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