【问题标题】:find and replace parts of a string in sql在sql中查找和替换字符串的一部分
【发布时间】:2020-05-27 10:44:27
【问题描述】:

我正在使用 Telerik RadEditor 插入格式丰富的文本。问题是我的 rdlc 报告可以格式化除<span style="text-decoration: underline;"> Underlined this Text </span> 之外的所有 html 标记。如果我使用<u>Underlined this Text</u>,它会在报告中很好地呈现,但控件不会以该格式保存它。 (是的,我知道<u> 已贬值...)。

我想要做的是在插入记录后更新记录,并将任何<span style="text-decoration: underline;"> 标记替换为<u> 标记,并将它们的结束标记</span> 替换为</u>。但我不确定如何在 sql 中执行此操作。

这是当前保存的示例记录的样子:

Plain Text <strong> Bold Text </strong><span style="color: #ff0000;"> Color Text </span>/<em><span style="text-decoration: underline;"> Underlined and Italics Text </span></em> and <span style="text-decoration: underline;"> Underlined Only Text </span>

这是一个示例保存记录的样子:

Plain Text <strong> Bold Text </strong><span style="color: #ff0000;"> Color Text </span>/<em><u> Underlined and Italics Text </u></em> and <u> Underlined Only Text </u>

关于如何做到这一点的任何想法?

【问题讨论】:

    标签: sql rdlc


    【解决方案1】:

    您可以实现如下所示的自定义内容过滤器,它将 span 标签转换为 U 标签。对其他标签使用相同的方法:

    <telerik:radeditor runat="server"ID="RadEditor1" OnClientLoad="OnClientLoad" ContentFilters="MakeUrlsAbsolute,FixEnclosingP">  
    </telerik:radeditor>
                                    <script type="text/javascript">
                                        function OnClientLoad(editor, args) {
                                            editor.get_filtersManager().add(new FixUnderline());
                                        }
    
                                        FixUnderline = function() {
                                        FixUnderline.initializeBase(this);
                                            this.IsDom = true;
                                            this.Enabled = true;
                                            this.Name = "FixUnderline";
                                            this.Description = "This filter changes CSS underline to u tag";
                                        };
                                        FixUnderline.prototype = { _getElements: function(a, c) {
                                            var b = a.getElementsByTagName(c);
                                            if (!b) {
                                                b = a.ownerDocument.getElementsByTagName(c);
                                            } return b;
                                        }, _replaceElementWithSpan: function(l, h, k) {
                                            var m = this._getElements(l, h);
                                            var d = [];
                                            for (var b = m.length - 1; b >= 0; b--) {
                                                Array.add(d, m[b]);
                                            } for (var a = 0, c = d.length; a < c; a++) {
                                                var e = l.ownerDocument.createElement("span");
                                                e.style.cssText = k;
                                                var f = d[a];
                                                var g = f.innerHTML;
                                                if ($telerik.isIE && g == " ") {
                                                    e.innerText = g;
                                                } else {
                                                    Telerik.Web.UI.Editor.Utils.setElementInnerHtml(e, g);
                                                } f.parentNode.replaceChild(e, f);
                                            }
                                        }, _replaceSpanWithElement: function(o, n, f) {
                                            var q = this._getElements(o, "span");
                                            var e = [];
                                            for (var b = q.length - 1; b >= 0; b--) {
                                                Array.add(e, q[b]);
                                            } for (var a = 0, c = e.length; a < c; a++) {
                                                var m = [];
                                                var g = e[a];
                                                for (var p = 0; p < g.childNodes.length; p++) {
                                                    Array.add(m, g.childNodes[p].cloneNode(true));
                                                } if (g.style.cssText.toLowerCase() == f || g.style.cssText.toLowerCase() == (f + ";")) {
                                                    var h = o.ownerDocument.createElement(n);
                                                    for (var d = 0; d < m.length; d++) {
                                                        h.appendChild(m[d]);
                                                    } g.parentNode.replaceChild(h, g);
                                                }
                                            }
                                        }, getHtmlContent: function(a) {
                                            this._replaceSpanWithElement(a, "u", "text-decoration: underline");
                                            return a;
                                        }, getDesignContent: function(a) {
                                            this._replaceElementWithSpan(a, "u", "text-decoration: underline");
                                            return a;
                                        }
                                        };
                                        FixUnderline.registerClass("FixUnderline", Telerik.Web.UI.Editor.Filter);
                                    </script>
    

    https://www.telerik.com/forums/underline-in-radeditor-and-telerik-reportinghttps://demos.telerik.com/aspnet-ajax/editor/examples/builtincontentfilters/defaultcs.aspx 上查看更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 2017-01-17
      • 2018-12-18
      • 1970-01-01
      • 2014-02-14
      相关资源
      最近更新 更多