2017-06-14 102 views
0

我從我們的數據庫中讀取文件名列表,並且任何包含a的文件名不包含guid都被認爲是作爲模板的一部分包含的文件。文件列表可以包含文件,其中一些文件具有guid(模板的一部分),而其他文件不具有guid(不來自模板)。我怎麼能區分那些沒有GUID的文件?如何判斷一個字符串是否包含Guid作爲子字符串?

這裏有一個例子:

List<string> spotFiles = DAL.HtmlSpot.GetSpotMedia(); //Returns {"manifest.xml", "attributes-97c23e02-e216-431b-9b6b-c5852962e92d.png"} 

foreach(string file in spotFiles) 
{ 
    //If file contains a guid as a substring 
     //Handle template file 
    //Else 
     //Handle non-template file 
} 
+7

我敢肯定有一個Guid的正則表達式在那裏 – BradleyDotNET

+2

[C#正則表達式爲Guid](http://stackoverflow.com/questions/11040707/ddg#11040993) – hatchet

回答

1

你可以用正則表達式做它像這樣:

List<string> spotFiles = DAL.HtmlSpot.GetSpotMedia(); //Returns {"manifest.xml", "attributes-97c23e02-e216-431b-9b6b-c5852962e92d.png"} 

foreach(string fileName in spotFiles) 
{ 

var guidMatch = Regex.Match(fileName, @"(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}", 
     RegexOptions.IgnoreCase); 

    if (guidMatch.Success) 
    { 
     //Handle template file 
    } 
    else 
    { 
     //Handle non-template file 
    } 
} 

  1. 正則表達式的表現可以說是相當昂貴的
  2. 沒有認爲t他的正則表達式將抓住100%的案例。

如果處理也文件名有某種分離的說,「_」 如「aaa_bbb_GUID_ccc.txt」
您可以將文件名字符串分割零件,然後在每個部分使用Guid.TryParse() 。

+0

謝謝。我使用了Regex解決方案,因爲我的情況不會經常運行,不足以成爲性能問題,但基於分隔符分隔的方法是我將來要記住的。 – Imbajoe

相關問題