Динамический формат строки C # - PullRequest
1 голос
/ 24 марта 2011

В 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"> к началу текста заголовкаи время, и добавьте </font></b> прямо перед разделом:.

Так что да, лол, я вроде как потерян.и Regex паттернов, но без особого успеха.Я действительно не хочу ЗАМЕНЯТЬ текст, просто добавляю / предварительно ожидаю в определенных позициях.

Есть ли простой способ сделать это?

Примечание: теги [] на самом деле являются тегами <>, но я не могу использовать их здесь LOL

Ответы [ 4 ]

2 голосов
/ 24 марта 2011

То, что вы используете 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/]

Edit: Вот некоторый код 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);
0 голосов
/ 24 марта 2011

Рассматривали ли вы создание стиля и установку класса css для каждой строки, заключая каждую строку в тег p или div?

Легче поддерживать и создавать.

0 голосов
/ 24 марта 2011

Самый простой способ, вероятно, состоит в использовании 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/>";
0 голосов
/ 24 марта 2011

пытались ли вы .Insert() проверить это .

...