在.net中,我們可以使用string.format
函式來格式化字串,乙個簡單的示例如下:
stringtemplate = "hello ! welcome to c#!";
stringresult = string.format(template, "world");
這種格式化的方式對於字串模板較短的時候還算比較簡潔,但是一旦遇到像郵件這樣比較大的模板的時候,一大堆的,,就有點令人眼花繚亂了。這種情況下,往往需要一種有意義的變數來代表這種, 的數字。
stringtemplate = "hello %name%! welcome to c#!";
stringresult = template.replace("%name%", "world");
這種方式的通用性不是很強,但比較簡單,今天在這裡推薦乙個通用性較好的方案——razorengine。
stringtemplate = "hello @model.name! welcome to razor!";
stringresult = razor.parse(template, new);
當然,razorengine的功能遠不止如此,更多的是用它打造**生成器,感興趣的朋友可以參看下這篇文章:
重複輪子
我一般用到這種大文字模板的地方往往是自己編寫一些小工具時,動態生成並呼叫批處理檔案。本身razorengine能滿足我的要求,但我一般喜歡生成乙個單一的exe檔案,然後把exe檔案丟到需要批量處理的資料夾中執行,並不希望順便帶上幾個dll,也用不到razorengine裡面的那些高階功能。因此,我這裡就借鑑了一下razorengine的語法,做了乙個重複輪子:
staticclassstrformater
staticstringgetvalue(matchmatch, objectdata)
catch(exception)'的值
", paraname);
thrownewargumentexception(errmsg);}}
} 使用這個類也非常簡單:
stringtemplate = "hello @name! welcome to c#!";
stringresult = strformater.format(template, new);
模板中把要替換的屬性前面加乙個'@'符號即可,並不需要像razorengine那樣加model。
RazorEngine 未解決,留底
templateserviceconfiguration templateconfig new templateserviceconfiguration razor.settemplateservice newtemplateservice templateconfig string templat...
模版引擎RazorEngine簡介
asp.net mvc的razor想必大家都比較熟悉,這裡介紹乙個獨立於asp.net的razorengine。razorengine是乙個開源的專案,它的基礎就是asp.net mvc的razor。github專案位址。您可以在windows console或者windows forms使用它。下...
在非MVC下RazorEngine的使用
1 通過nuget安裝razorengine 2 來看 後台部分 string cshtml file.readalltext fullpath 得到檔案內容 string cache cache encryphelper.md5 cshtml string myhtml razor.parse c...