You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Razor中如何为字符串引号包裹内容单独应用CSS样式

实现方案

完全可以对字符串的局部子内容单独设置样式,不需要前端JS介入,直接在cshtml渲染阶段做正则替换即可实现需求:匹配所有被引号包裹的文本片段,给片段外层包裹对应样式标签后再输出。

具体操作步骤

  • 首先在当前cshtml文件顶部引入正则依赖:
    @using System.Text.RegularExpressions;
  • 在cshtml的代码块中定义格式化处理的局部方法,用来自动识别并包裹引号内的文本:
@functions {
    // 正则匹配所有成对双引号包裹的内容,RegexOptions.Compiled 可以提升重复调用时的性能
    private static readonly Regex QuotedTextRegex = new Regex(@"""[^""]+""", RegexOptions.Compiled);
    
    private IHtmlContent RenderWithBoldQuotedText(string rawContent)
    {
        if (string.IsNullOrWhiteSpace(rawContent))
        {
            return HtmlString.Empty;
        }
        // 将匹配到的引号内容包裹加粗标签
        var formattedContent = QuotedTextRegex.Replace(rawContent, match => $"<strong>{match.Value}</strong>");
        return Html.Raw(formattedContent);
    }
}

如果你的文本里引号是转义格式的&quot;,只需要把正则替换为@"&quot;[^&]+&quot;"即可正常匹配。

  • 修改你原有循环中的输出逻辑,把直接输出@Html.Raw(item)的部分替换为调用上面写好的格式化方法,顺便修正原有代码里的变量名笔误(firsLine改为firstLine):
@foreach (var error in Model.Errors)
{
    var errors = error.Split(Environment.NewLine);
    bool firstLine = true;

    foreach (var item in errors)
    {
        if (firstLine)
        {
            <p class="leading-8 text-red-500 font-spec-bold">
                @RenderWithBoldQuotedText(item)
            </p>
            firstLine = false;
        }
        else
        {
            <p id="teste" class="leading-8 main-text-color">
                @RenderWithBoldQuotedText(item)
            </p>
        }
    }
}

效果说明

  • 传入原始文本:I need this "WORD" in bold.
  • 最终渲染DOM结构:I need this <strong>"WORD"</strong> in bold.,完全符合预期,仅引号包裹的文本会应用加粗效果,其余文本原有样式不受任何影响。

如果需要自定义引号内容的样式(比如修改颜色、加背景),只需要把替换逻辑里的<strong>标签换成带自定义class的span即可,例如替换为<span class="font-bold text-red-500">{match.Value}</span>就可以实现自定义样式效果。


内容的提问来源于stack exchange,提问作者Alline Cardoso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:39:15