2010-02-24 70 views
4

我有一個ASP.NET MVC應用程序,它允許用戶上傳一個只包含純文本的文件。驗證上傳的文件只包含純文本

我正在尋找一種簡單的方法來驗證該文件確實只包含文本。

對於我而言,我很高興來定義文本任何我可以看到我的印GB QWERTY鍵盤上的字符。

業務規則意味着我上傳的文件不會包含任何重音字符,因此代碼接受或拒絕這些字符並不重要。

途徑至今還沒有工作:

  • 檢查內容類型;不好,因爲這取決於文件擴展名
  • 檢查每個字符的char.IsControl;沒有用,因爲該文件可以包含被認爲是控制字符的管道(|)字符

我寧願避免使用冗長的Regex模式來使其工作。

+0

似乎文本文件的編碼在這裏也是相關的,除非你要求你處理單字節字符。 – 2010-02-24 17:31:53

+0

你有沒有考慮用正則表達式來掃描數據? – 2010-02-24 17:31:57

+0

你如何定義「純文本」?明文中可能包含什麼,什麼不是? – stmax 2010-02-24 17:32:52

回答

2

這聽起來像你想ASCII characters 32-126加上一些零星的東西,如9(水平選項卡),回車換行&等。

我寧願避免使用冗長的正則表達式 模式來讓這個工作。

只要這並不意味着「根本沒有正則表達式」,你可以使用從this stack overflow question接受的答案(我已經添加了水平製表符到原來的):

^([^\x09\x0d\x0a\x20-\x7e\t]*)$