返回带注释标记的字符串部分

时间:2014-03-04 13:46:32

标签: c# .net asp.net-mvc-4

我正在寻找获得部分字符串并使用HTML注释作为起点/终点的最有效方法。

例如,我想使用

<!-- START: Variable -->

stuff goes here

<!-- END: Variable -->

字符串应该只是注释之间的内容。我已经做了一个帮手,但对.net来说并不是很好。

@helper readPattern(string filepath, string patternSection = null) {

    TextReader tr = new StreamReader(filepath);
    string SplitBy = "<!-- START: "+patternSection+" -->";

    string fullLog = tr.ReadToEnd();

    fullLog.Trim().StartsWith("<!-- " + patternSection+ " -->");

    //string[] sections = fullLog.Split(new string[] { SplitBy }, StringSplitOptions.RemoveEmptyEntries);

     <div class="@patternSection">@fullLog</div>
}

我不需要拆分它,我只需要从我通过这个帮助器的注释中输出或修剪它。

1 个答案:

答案 0 :(得分:0)

你需要标记开始和结束,然后抓住它们之间的内容。 “介于两者之间”的范围为start + start string lengthend - (start + start string length)长度

@helper readPattern(string filepath, string patternSection = null) {

    TextReader tr = new StreamReader(filepath);
    String SplitBy = "<!-- START: "+patternSection+" -->";
    String EndBy = "<!-- END: "+patternSection+" -->";

    String fullLog = tr.ReadToEnd();

    int start = fullLog.IndexOf(SplitBy);
    int end = fullLog.IndexOf(EndBy);

    String data = fullLog.Substring(start + SplitBy.Length, end - (start + SplitBy.Length));

    <div class="@patternSection">@data</div>
}

顺便说一下,您还想要读者的Close / Dispose。如果我的假设是正确的,并且这个帮助器将反复使用相同的filepath,那么对于每次调用a而言,缓存文件的内容而不是一遍又一遍地读取它会对你有好处。你打电话给不同的patternSection。对于其他静态文件,这最终会导致很多文件打开和关闭。