0

次のように操作するhtml文字列があります。

string html = new MvcHtmlString(item.html.ToString()).ToHtmlString();

非常に似ていますが、一致させる必要がある 2 種類のテキストがあります。イニシャルを^^削除し、クロージングを|^^削除する必要があります。次に、複数のクライアントがある場合は、^区切りクライアントをコンマ (,) に変更する必要があります。

^^Client One- This text is pretty meaningless for this task, but it will exist in the real document.|^^

^^Client One^Client Two^Client Three- This text is pretty meaningless for this task, but it will exist in the real document.|^^

クライアント一人一人に合わせて大胆にできるようになる必要があります。

クライアント 1 - このテキストは、このタスクにはほとんど意味がありませんが、実際のドキュメントには存在します。

Client OneClient TwoClient Three - このテキストは、このタスクにはほとんど意味がありませんが、実際のドキュメントには存在します。

素晴らしいスタック オーバー フロー ユーザーが次の情報を提供してくれましたが、オンラインの正規表現テスターでテストしたときに、動作させることも、一致するものを見つけることもできませんでした。

const string pattern = @"\^\^(?<clients>[^-]+)(?<text>-.*)\|\^\^";

    var result = Regex.Replace(html, pattern,
                                m =>
                                {
                                    var clientlist = m.Groups["clients"].Value;
                                    var newClients = string.Join(",", clientlist.Split('^').Select(s => string.Format("<strong>{0}</strong>", s)));

                                    return newClients + m.Groups["text"];
                                });

私は正規表現に非常に慣れていないので、助けていただければ幸いです。

4

1 に答える 1

2

私はC#を初めて使用するので、初歩的な間違いを犯したら許してください:)

const string pattern = @"\^\^([^-]+)(-[^|]+)\|\^\^";

var temp = Regex.Replace(html, pattern, "<strong>$1</strong>$2");
var result = Regex.Replace(temp, @"\^", "</strong>, <strong>");

$1MSDN はその構文を使用してサブグループを参照することについて曖昧ですが、私は使用しています。

編集: 後のテキストにa が-含まれている可能性がある^場合は、これを行うことができます:

var result = Regex.Replace(temp, @"\^(?=.*-)", "</strong>, <strong>");
于 2013-08-30T17:11:03.493 に答える