三個程式設計中遇到的小問題彙編
本貼收集了幾個開發中遇到的小問題。
1:利用正規表示式關閉未關閉的 <img>
標籤。
對於一般的瀏覽器來說,img 標籤是否關閉,即 <img src="pic.jpg">
還是 <img src="pic.jpg" />
都可以。但是最近在寫markdown 轉 epub 格式的轉換器,發現如果不關閉 <img
標籤,有的 epub 閱讀器就會報錯。
用正規表示式解決這個問題很簡單:
html = Regex.Replace(html, @"(<img(""[^""]*""|[^>])+)(?<!/)>", @"$1 />");
實際使用了上面這個正規表示式以後,發現有些問題,換成了另一個簡單一些的:
html = Regex.Replace(html, @"(<img[^>]+)(?<!/)>");
請參考:http://stackoverflow.com/questions/2433809/close-all-html-unclosed-img-tags
2: ASP.NET 中全域性設定日期時間格式
在顯示 DateTime 型別的值的時候,都會呼叫 ToString() 方法,在中文環境,預設的日期顯示格式是 2013/03/24 11:20:45 這樣。
如果我們希望修改顯示格式,可以在顯示時候呼叫ToString() 時加上一個格式化的引數,例如:
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
這樣就會把斜線分隔符變成橫線了。但是每次都要這樣寫就比較麻煩了。而且在頁面顯示的時候,經常會遇到 DateTime?
型別的情況,例如在Razor頁面,假設要顯示一個變數 CreateTime
,它是 DateTiem?
型別的。 本來很簡單,只要幾個字母就可以了:
@CreateTime
這樣的結果是,如果是 CreateTime 等於 null 則不顯示,如果不是 null 時則顯示時間,但是如果為了修改顯示時間的格式,就要手工呼叫帶有格式字串引數的 ToString() 方法,而且麻煩的是此時還必須判斷一下是不是空,否則如果 CreateTime == null
,就要丟擲 NullReference 異常了。
因此這句話就變成了:
@(CreateTime == null ? CreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "")
一下子複雜了很多,因此可以做一個全域性的設定:
protected void Application_BeginRequest()
{
CultureInfo newCulture =
(CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
//newCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
//newCulture.DateTimeFormat.LongTimePattern = "HH:mm:ss";
newCulture.DateTimeFormat.DateSeparator = "-";
Thread.CurrentThread.CurrentCulture = newCulture;
}
- 如果只改分隔符,只修改 newCulture.DateTimeFormat.DateSeparator 即可。
- 如果要作其他修改,分別設定短日期和長時間的格式即可,如上面程式碼中註釋掉的兩行所示。
3. 在Visual Studio中建立清晰的專案結構
- 開啟 Visual Studio 。
- FILE -> New Project 。
- 在對話方塊左側欄選擇
Installed -> Templates -> Other Project Types -> Visual Studio Solutions -> Blank Solution 。 - 填寫 Solution 的名字,例如 MyApp 。
- 填寫 Solution 的位置,例如 D:\, 而不要寫 D:\MyApp 。
- 確定,這樣就建立了一個空的 Solution 。
- 在右側 Solution Explore 窗格中選中建立的Solution名稱,滑鼠右鍵,選擇 Add -> New Project... 。
- 在對話方塊中選擇專案型別,例如 C# -> Web -> ASP.NET MVC4 。
- 填寫專案名稱,例如 MyApp.Web 。
- 填寫專案位置,例如 D:\MyApp,而不要寫 D:\MyApp\MyApp.Web 。
- 可以繼續增加各種 Project 到 Solution 中。這樣就可以建立起一個結構很清晰的 Solution 了。
相關文章
- 【Java】程式設計過程中遇到的中文編碼問題Java程式設計
- 微信小程式開發中遇到的幾個小問題微信小程式
- 程式設計師在程式設計中遇到的奇葩弱智問題程式設計師
- VMware ESX 3.0安裝中遇到的一個小問題
- STM彙編程式設計程式設計
- 【轉】程式設計師求職面試中經常遇到的面試問題程式設計師求職面試
- 百度小程式遇到的問題
- 小程式遇到的一些問題
- 彙編學習小記(二)-順序程式設計程式設計
- 彙編實驗小記(五)-迴圈程式設計程式設計
- hadoop遇到的問題(彙總)Hadoop
- IOS日常開發中遇到的小問題iOS
- 微信小程式開發中遇到的問題及解決方式微信小程式
- Java程式設計常見問題彙總Java程式設計
- 《程式設計珠璣》第2章三個問題程式設計
- 每個程式設計師1小時內必須解決的5個程式設計問題程式設計師
- Vue使用中遇到的程式碼問題Vue
- UG程式設計常遇到的問題及解決方法程式設計
- Java程式設計常見問題彙總(一)Java程式設計
- 微信小程式開發問題彙總微信小程式
- 一個nvcc編譯的小問題編譯
- STM32彙編程式設計程式設計
- 【實驗】 ARM彙編程式設計程式設計
- 由面試題“併發程式設計的三個問題”深入淺出Synchronied面試題程式設計
- Linux 中編譯 PHP 會遇到的問題(轉)Linux編譯PHP
- jupyter lab 的三個小問題
- 專案中遇到的一些問題小結
- 程式設計師面試中的5個殺手鐗問題程式設計師面試
- PHP程式設計師遇到問題的冷門知識點PHP程式設計師
- 初試微信小程式遇到問題總結微信小程式
- 彙編學習小記(三)-查表
- dos下編譯執行java程式遇到的問題編譯Java
- AIX安裝oracle遇到的問題彙總AIOracle
- 微信小程式開發完工+問題彙總微信小程式
- 面試中遇到的問題面試
- 工作遇到的問題小記(一)
- Java程式設計師面試時應注意的三個經典問題!Java程式設計師面試
- 程式設計師需要自問的 10 個問題程式設計師