截取指定字符之间的数据(占位符)

今天在写自定义WebPart的时候,遇到一个问题,就是自己定义一组显示格式,需要显示数据的地方就用'$数据名称$'占位符替代,而我们则需要在代码里面做替换,把'$数据名称$'替换成数据库中列明为'数据名称'的数据;例如:<table> <tr> <td>$标题$</td> </tr> <tr> <td>$发布时间$</td> </tr> <tr> <td>$内容$</td> </tr> </table> 我现在想替换成: <table> <tr> <td>外包峰会发布</td> </tr> <tr> <td>2010-10-11</td> </tr> <tr> <td>外包峰会发布外包峰会发布外包峰会发布外包峰会发布外包峰会发布</td> </tr> </table>

 

首先,我们分析一下,我们既要替换'$标题$'之间的数据,又要得到'$标题$'直接的名称,因为我们要用'$标题$'之间的名称去匹配数据里面的数据,那么我们需要先分解整个字符串,找出所有的'$标题$'之间的字符串,得到'$标题$'这种形式的字符串集合;再把得到集合里面的每一个字符串中的'$'删除,得到'标题',在根据标题取得数据库中的数据,最后把得到的数据替换'$标题$',得到我们想要的数据,大概思路就这样,下面就贴我自己写的代码:

static void Main(string[] args) { string str = "<table><tr><td>$标题$</td></tr><tr><td>$发布时间$</td></tr><tr><td>$内容$</td></tr></table>"; //开始执行 StringSplace(str, '$'); } /// <summary> /// 从指定的字符串中取出指定字符之间的数据(占位符) /// </summary> /// <param name="str">源字符串</param> /// <param name="value">需要移除的字符</param> /// <returns>返回封装取到的占位符的值的集合</returns> private static void StringSplace(string str, char value) { try { //定义一个集合,存储自定字符的下标 List<int> footInt = new List<int>(); int i = 0; //开始查找指定字符 foreach (char item in str) { //查找到指定字符 if (item.Equals(value)) { //把该字符的下标存储到集合里面 footInt.Add(i); } i++; } //判断指定字符是否为双数,如果不是,说明格式有问题 if (footInt.Count % 2 != 0) { Console.WriteLine("输入格式不对!"); } else { List<string> headList = new List<string>(); //开始取数据 for (int j = 0; j < footInt.Count; j += 2) { headList.Add(str.Substring(footInt[j], (footInt[j + 1] + 1 - footInt[j]))); } foreach (string item in headList) { Console.WriteLine(item + ":" + StringRemove(item, value.ToString())); } } } catch (Exception ex) { Console.WriteLine("读取数据时发生错误:"+ex.Message); } } /// <summary> /// 移除指定字符串中的指定字符 /// </summary> /// <param name="str">源字符串</param> /// <param name="value">需要移除的字符</param> /// <returns>返回新的字符串</returns> private static string StringRemove(string str, string value) { string strRemove = str.Remove(str.IndexOf(value), value.Length); return strRemove.Remove(strRemove.IndexOf(value), value.Length); }

 

注意:这里是利用'$$'占位符直接的字符来取值,并且替换掉'$$'直接包括'$$',显示根据'$$'直接的列名所取到的数据。

你可能感兴趣的:(截取指定字符之间的数据(占位符))