动态字符串格式C#

时间:2011-03-24 04:47:33

标签: c# string dynamic format prepend

在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

4 个答案:

答案 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)

您是否考虑通过在pdiv代码中包装每一行来创建样式并设置每行的css类?

易于维护和构建。