在C#,Windows Form中,我将如何做到这一点:
07:55 Header Text: This is the data<br/>07:55 Header Text: This is the data<br/>07:55 Header Text: This is the data<br/>
所以,正如你所看到的,我有一个返回字符串,可能相当长,但我希望能够将数据格式化为这样:
<b><font color="Red">07:55 Header Text</font></b>: This is the data<br/><b><font color="Red">07:55 Header Text</font></b>: This is the data<br/><b><font color="Red">07:55 Header Text</font></b>: This is the data<br/>
正如您所看到的,我基本上希望将<b><font color="Red">
添加到标题文本&amp;的前面。时间,并在{section>之前追加</font></b>
。
所以是的,大声笑,我有点失落。
我已经搞乱了 .Replace()和正则表达式模式,但没有取得多大成功。我真的不想替换文本,只是在某些位置附加/预先挂起。
有一种简单的方法吗?
注意:[]标签实际上是&lt;&gt;标签,但我不能在这里使用它们lol
答案 0 :(得分:2)
仅仅因为您使用RegEx并不意味着您必须替换文本。
以下正则表达式:
(\d+:\d+.*?:)(\s.*?\[br/\])
有两个'捕获组'。然后,您可以使用以下内容替换整个文本字符串:
[b][font color="Red"]\1[/font][/b]\2
哪个应该产生以下输出:
[b][font color="Red"]07:55 Header Text:[/font][/b] This is the data[br/]
[b][font color="Red"]07:55 Header Text:[/font][/b] This is the data[br/]
[b][font color="Red"]07:55 Header Text:[/font][/b] This is the data[br/]
编辑:以下是一些演示上述内容的C#代码:
var fixMe = @"07:55 Header Text: This is the data[br/]07:55 Header Text: This is the data[br/]07:55 Header Text: This is the data[br/]";
var regex = new Regex(@"(\d+:\d+.*?:)(\s.*?\[br/\])");
var matches = regex.Matches(fixMe);
var prepend = @"[b][font color=""Red""]";
var append = @"[/font][/b]";
string outputString = "";
foreach (Match match in matches)
{
outputString += prepend + match.Groups[1] + append + match.Groups[2] + Environment.NewLine;
}
Console.Out.WriteLine(outputString);
答案 1 :(得分:0)
您是否尝试.Insert()
检查this。
答案 2 :(得分:0)
最简单的方法可能是使用string.Replace()
和string.Split()
。假设您的输入字符串为input
(未经测试):
var output = string.Join("<br/>", in
.Split("<br/>)
.Select(l => "<b><font color=\"Red\">" + l.Replace(": ", "</font></b>: "))
.ToList()
) + "<br/>";
答案 3 :(得分:0)
您是否考虑通过在p
或div
代码中包装每一行来创建样式并设置每行的css类?
易于维护和构建。