2010-02-17 61 views
2

我有点新的C#中,我寻找匹配模式做以下的字符串,C#的模式匹配

我有这样

这本书将在 展出的字符串在唐宁街11号 和接收将通过关键的医疗出席

我需要创建一个span标签来突出显示某些文本片段使用startIndex和长度,

为例,

  1. 的startIndex = 3,长度= 10
  2. 的startIndex = 8,长度= 8

我需要动态,并且还创建span标记为交叉点创建单独的跨度标记

在这种情况下,

The < span id= 'span1' color='blue'> book < /span> < span id='intersectionSpan' color= pink > will </ span> < span id '= span2' color = 'yellow' > be showcased </ span> 

任何人遇到任何种类的设计图案或smiler问题

的请指教

+0

我认为我们需要更多的细节。添加这些span标签的规则是什么? – 2010-02-17 17:50:06

+0

顺便说一句,C#没有模式匹配能力。幸运的是,.NET的确如此。 – 2010-02-17 19:36:02

回答

1

我不认为这关系到德兴的模式,但我会看什么ü要求定制控制

正如你所知道的标签控件将呈现为一个跨度,以便开始进行,例如继承新的控制customlabel从标签控件和克里特功能里面接受的位置(startIndex和长度)和颜色(红,黄)

让我们说我们有控制

private string AddSpan(string originalString, int[] location, string color) 
    { 
     string old = originalString.Substring(location[0], location[1]); 
     string newStr = string.Format("<span id= '{0}' color='{1}'>", "idUWant", color); 
     originalString = originalString.Replace(old, newStr); 
     return originalString ; 
    } 

的originaltext是这里面的功能这本书将在唐宁街11号的一个招待会上展示 并将出席重点医疗

位置很简单2维数组的整数第一个将是起始索引,第二个将是长度,颜色参数是颜色字符串

我认为这是更好地使数据容器像一个类holiding的paramters只喜欢startIndex和长度和颜色一些特性,使其更容易阅读和维护

+0

因为字符串是.NET中的引用类型,所以AddSpan之外的任何内容都不会看到替换的结果。看到这里的解释:http://www.yoda.arachsys.com/csharp/parameters.html – 2010-02-17 18:40:09

+0

是啊我知道我只是给了她的关键,它应该修改它像使函数返回字符串或让功能修改一个公共财产或标签文本直接,thnx无论如何 – 2010-02-17 19:22:35

0

嗯,我会的“标签”的集合开始。这些将具有要标记的文本的开始和长度。标签还应该能够判断某个位置是否在标签中。

bool IsInTag(int position) 

从那里只是循环的字符串。在每个位置添加该位置的标签数量。如果它比最后一个位置多,则开始一个新标签,因为新标签与它相交。如果较少,则从交叉路口刚刚结束时结束一个跨度。保存下一个循环的编号并重复。

这应该做到这一点。因为这只是我的头顶,所以你可能想玩一玩。