如何替换字符串中的奇怪模式?

2024-03-19

我正在用 SQL 创建一个临时过程,因为我有一个用 markdown 编写的表的值,因此它在 Web 浏览器中显示为呈现的 HTML(Markdown 到 HTML 的转换).

该列的字符串当前如下所示:

Questions about **general computing hardware and software** are off-topic for Stack Overflow unless they directly involve tools used primarily for programming. You may be able to get help on [Super User](http://superuser.com/about)

我目前正在处理粗体和斜体文本。这个意思(在粗体文本的情况下)我需要替换奇数 N 次的模式**with<b>甚至有时与</b>.
I saw 代替() http://msdn.microsoft.com/fr-fr/library/ms186862.aspx但它对字符串的所有模式执行替换。

那么,如何仅在奇数或偶数时替换子字符串呢?

Update:有些人想知道我正在使用什么模式,所以看看吧.

如果你愿意的话,还有一个额外的:Markdown 风格的超链接到 html 超链接看起来并不那么简单。


使用STUFF函数和一个简单的WHILEloop:

CREATE FUNCTION dbo.fn_OddEvenReplace(@text nvarchar(500), 
                                      @textToReplace nvarchar(10), 
                                      @oddText nvarchar(10), 
                                      @evenText nvarchar(500))
RETURNS varchar(max)
AS
BEGIN
    DECLARE @counter tinyint
    SET @counter = 1

    DECLARE @switchText nvarchar(10)
    WHILE CHARINDEX(@textToReplace, @text, 1) > 0
    BEGIN
        SELECT @text = STUFF(@text, 
                    CHARINDEX(@textToReplace, @text, 1), 
                    LEN(@textToReplace), 
                    IIF(@counter%2=0,@evenText,@oddText)),
                @counter = @counter + 1
    END
    RETURN @text
END

你可以像这样使用它:

SELECT dbo.fn_OddEvenReplace(column, '**', '<b>', '</b>')
FROM table

UPDATE:

这被重写为 SP:

CREATE PROC dbo.##sp_OddEvenReplace @text nvarchar(500), 
                                  @textToReplace nvarchar(10), 
                                  @oddText nvarchar(10), 
                                  @evenText nvarchar(10),
                                  @returnText nvarchar(500) output
AS
BEGIN
    DECLARE @counter tinyint
    SET @counter = 1

    DECLARE @switchText nvarchar(10)
    WHILE CHARINDEX(@textToReplace, @text, 1) > 0
    BEGIN
        SELECT @text = STUFF(@text, 
                    CHARINDEX(@textToReplace, @text, 1), 
                    LEN(@textToReplace), 
                    IIF(@counter%2=0,@evenText,@oddText)),
                @counter = @counter + 1
    END
    SET @returnText = @text
END
GO

并执行:

DECLARE @returnText nvarchar(500)
EXEC dbo.##sp_OddEvenReplace '**a** **b** **c**', '**', '<b>', '</b>', @returnText output

SELECT @returnText
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何替换字符串中的奇怪模式? 的相关文章

随机推荐

  • 为什么当您在 package.json 中设置 "private": true 时,“无许可证字段”警告消失

    我有一个反应应用程序 通过安装其依赖项yarn install 当我运行此命令时 我得到以下信息No license field相关警告 warning package json No license field warning email
  • 如何对熔化的数据帧进行零归一化?

    假设我有这个熔化的 data frame molten lt data frame gene c a1 b1 a1 b1 a1 b1 count c 3 4 5 2 6 7 condition c A A B B C C gene coun
  • PHP 框架与内容管理系统

    您如何向精通技术 主要精通硬件 网络 但很少或根本不编程 的人解释 PHP 框架和 CMS 例如 Wordpress 之间的区别 作为一名业余到中级程序员 我可以尝试回答这些问题 但我更重视那些对框架和 CMS 更有经验的人的意见 您可以查
  • 如何在 NSMenu 中放置水平滑块(Swift 3,Xcode 8)

    从 macOS Sierra 开始 音量菜单栏项目提供了一个水平滑块项目来更改系统的音量 我想在我自己的应用程序中采用这个概念 并提出了以下课程 import Cocoa NSApplicationMain class AppDelegat
  • XSLT:如果满足条件,如何退出“for-each”循环

    如果满足条件 如何退出 XSL 中的 for each 循环 例如假设我希望 XSL 显示具有 2 间卧室且租金
  • iPhone 开发:处理大量数据时 Core-Plot 性能缓慢

    iPhone 开发 处理大量数据时 Core Plot 性能缓慢 我尝试将 500 个数据放入绘图中 性能表明它确实很慢 大多数烛台图都混合在一起 请问有人可以帮我解决吗 注意绘图区域的大小 如果数据点多于像素 请按照 benzado 建议
  • 软件测试 pdf 是否正确创建[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我用 Laravel 编写了一个 REST 应用程序 它接受 Json 有效负载并使用该数据创建格式化的 pdf 是否可以编写一个测试
  • 实体框架与 AssociateWith

    当我使用 Linq2Sql 时 我可以通过在 DataLoadOptions AssociateWith 方法中使用 lambda 表达式来过滤表 我用它来过滤所使用的语言 所以我有一个包含所有语言的语言表和一个包含对象的对象表 Like
  • 从子类访问私有继承类的名称

    以下代码无法编译 g 会出现此错误 clang 也会出现类似错误 main cpp 16 19 error QByteArray is a private member of QByteArray Container2 const QByt
  • Json 字符串到地图的转换,

    我正在尝试编写嵌套 JsonObject 到映射转换的通用代码 我有一个示例 JSONObject 作为 glossary title example glossary GlossDiv title S GlossList GlossEnt
  • ASP.Net 中的图表助手显示日期时间

    在 asp net mvc 应用程序中 我需要创建一个简单的折线图 所以我尝试了图表助手 该图表是使用两个列表创建的 x 轴应显示日期时间 y 轴应显示每个时间的值 现在使用下面的代码可以正常工作 listOfDateTimes 包含日期时
  • 当应用程序通过 gradle run 启动时,java.util.scanner 抛出 NoSuchElementException

    我创建了一个简单的 java echo 应用程序 它接受用户的输入并将其显示给他们以演示问题 我可以使用 IntelliJ 的内部 运行 命令毫无问题地运行该应用程序 并且在执行由gradle build 但是 如果我尝试使用执行应用程序g
  • 哪些递归函数不能使用循环重写? [复制]

    这个问题在这里已经有答案了 据我所知 大多数递归函数都可以使用循环重写 有些可能比其他的更难 但大多数都可以重写 在什么条件下不可能使用循环重写递归函数 如果存在这种条件 当您递归地使用函数时 编译器会为您处理堆栈管理 这使得递归成为可能
  • UIViewController 在 vi​​ewWillAppear 和 viewDidAppear 之间调整自身大小?

    我的项目中有一个非常奇怪的错误 我有一个UIScrollView作为我的主要观点 在它里面 我有一个UIViewController not UITableViewController 其中有一个UITableView实例变量 以及一些杂项
  • Wordpress 中的登录用户列表?

    是否可以获取 WordPress 中登录用户的列表 是的 有一个插件 WP OnlineUsers 您可以在这里找到这个插件 http lesterchan net portfolio programming php http lester
  • cassandra 中的行何时被覆盖

    我的理解是 当插入具有相同主键的另一行时 行将被覆盖 例如 我有专栏 user id int item id int site id int 和我的PRIMARY KEY user id item id 如果我有下表 user id ite
  • 获取手机类型

    当手机使用 PHP 连接到 mobi 网站时 有没有办法获取手机的类型 您可以使用 PHP 阅读用户代理 这可能会给您提供线索 http Detectmobilebrowsers mobi http detectmobilebrowsers
  • 非法字符错误:'\u200b'

    我正在面向对象编程课程中为小行星游戏制作小行星场 但收到非法字符错误 u200b 该问题似乎发生在第 12 行 import java awt Point 和 public class Asteroid extends PolyBlob 之
  • 回到 Rails

    因此 在离开几年后 我决定重新使用 Ruby on Rails 来完成我的一些个人项目 我想知道什么是了解 Rails 新功能的最佳资源 自从 1 2 发布以来 我什至还没有真正接触过 Rails 哦 是的 TextMate 仍然是 Mac
  • 如何替换字符串中的奇怪模式?

    我正在用 SQL 创建一个临时过程 因为我有一个用 markdown 编写的表的值 因此它在 Web 浏览器中显示为呈现的 HTML Markdown 到 HTML 的转换 该列的字符串当前如下所示 Questions about gene