【问题标题】:Inserting html tags into string in parentheses with c#使用c#将html标签插入括号中的字符串中
【发布时间】:2019-11-03 11:21:02
【问题描述】:

虽然我用谷歌搜索了很多,但我没有找到满意的结果。我是 Regex 的新手,所以我什么也写不出来。我有这样的字符串:[Whatever You Want (WYW)]。我想得到这样的结果:[Whatever You Want (<b>WYW</b>)]。但是字符串会改变每个条件,例如 [New String (NS)][Other string (OTS)] 等。

我知道这里有人问过类似的问题。但是我无法找到解决方案,我不得不在这里写下。

我想,我必须使用正则表达式,但我不知道。我该怎么做?

【问题讨论】:

  • 请检查链接的问题,尝试一下,如果失败,请回来分享您的发现并准确解决问题。
  • 在其最简单的次优形式中,var newString = oldString.Replace(findThis, $"<b>{findThis}</b>"); 它是 HTML 的事实可能并不相关。你只是找到一个字符串并用一个新字符串替换它(它恰好包含原始字符串。)正则表达式 可能 是一个很好的解决方案,但现在你正在做的看起来非常简单查找和替换。为了性能,也许使用StringBuiilder.Replace()
  • @WiktorStribizew,我没有看到任何用 c# 编写的表达式。
  • @ScottHannen,感谢您的评论。我编辑了我的问题。每个条件的字符串都会改变。唯一常用的表达式是括号 ()。
  • 所以你想要的是找到一对括号的每个实例并将括号的内容包裹起来——不管它们是什么——用粗体标签。方括号能算进去吗?

标签: c# regex


【解决方案1】:

使用

Regex.Replace(s, @"\(([^()]*)\)", "(<b>$1</b>)")

.NET regex demo

C# demo:

using System;
using System.Text.RegularExpressions;

public class Test
{
    public static void Main()
    {
        var s = "[Whatever You Want (WYW)]";
        Console.WriteLine(Regex.Replace(s, @"\(([^()]*)\)", "(<b>$1</b>)"));
    }
}

输出:[Whatever You Want (&lt;b&gt;WYW&lt;/b&gt;)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 2022-11-18
    相关资源
    最近更新 更多