当前位置: 首页 > 面试题库 >

从字符串中替换多个字符,而无需使用任何嵌套的替换功能

谯德佑
2023-03-14
问题内容

我的桌子上有一个方程式。我一次要提取一个方程式,并希望将所有运算符替换为其他任何字符。

输入字符串: (N_100-(6858)*(6858)*N_100/0_2)%N_35

运算符或模式: (+, -, *, /, %, (, ))

替换字符: ~

输出字符串: ~N_100~~6858~~~6858~~N_100~0_2~~N_35

我曾尝试使用 嵌套的REPLACE 函数在下面的查询中得到所需的输出:

DECLARE @NEWSTRING VARCHAR(100) 
SET @NEWSTRING = '(N_100-(6858)*(6858)*N_100/0_2)%N_35' ;
SELECT @NEWSTRING = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
                    @NEWSTRING, '+', '~'), '-', '~'), '*', '~'), '/', '~')
                   , '%', '~'), '(', '~'), ')', '~')
PRINT @NEWSTRING

输出: ~N_100~~6858~~~6858~~N_100~0_2~~N_35

如何在不使用嵌套替换功能的情况下替换所有运算符?


问题答案:

我创建了一个SPLIT函数来实现此目的,因为我需要多次执行此操作PROCEDURE

分割功能

create function [dbo].[Split](@String varchar(8000), @Delimiter char(1))       
returns @temptable TABLE (items varchar(8000))       
as       
begin       
    declare @idx int       
    declare @slice varchar(8000)

    select @idx = 1       
        if len(@String)<1 or @String is null  return

    while @idx!= 0       
    begin       
        set @idx = charindex(@Delimiter,@String)       
        if @idx!=0       
            set @slice = left(@String,@idx - 1)       
        else       
            set @slice = @String

        if(len(@slice)>0)  
            insert into @temptable(Items) values(@slice)

        set @String = right(@String,len(@String) - @idx)       
        if len(@String) = 0 break       
    end   
return       
end

过程中使用的代码:

DECLARE @NEWSTRING VARCHAR(100) 
SET @NEWSTRING = '(N_100-(6858)*(6858)*N_100/0_2)%N_35' ;
SELECT @NEWSTRING = REPLACE(@NEWSTRING, items, '~') FROM dbo.Split('+,-,*,/,%,(,)', ',');
PRINT @NEWSTRING

输出

~N_100~~6858~~~6858~~N_100~0_2~~N_35


 类似资料:
  • 我希望我的程序替换输入字符串中的每个元音。

  • 问题内容: 我有一些带有以下格式的方程式的字符串。 我还有一个文本文件,其中包含每个变量的名称,例如: 等等… 什么是对我来说,写代码的最佳方式,使其在插头到处发生,并且对等? 问题答案: 对于string ,请使用以下函数:

  • 问题内容: 我正在尝试用多个其他单词替换字符串中的多个单词。字符串是“我有一只猫,一只狗和一只山羊”。 但是,它不会产生“我有一只狗,一只山羊和一只猫”,而是会产生“我有一只猫,一只猫和一只猫”。在JavaScript中是否可以同时用多个其他字符串替换多个字符串,以便产生正确的结果? 问题答案: 具体解决方案 您可以使用一个函数替换每个函数。 概括它 如果您要动态维护正则表达式并仅将将来的交换添加

  • 我正在尝试用多个其他单词替换字符串中的多个单词。绳子是“我有一只猫,一只狗,和一只山羊。” 然而,这并不产生“我有一只狗,一只山羊,一只猫”,而是产生“我有一只猫,一只猫,一只猫”。是否可以在JavaScript中同时用多个其他字符串替换多个字符串,从而产生正确的结果?

  • 问题内容: 我试图遍历一个字符数组,并将字符串中的该字符替换为另一个数组中的并行字符。 这是我得到的例子: 它总是输出相同的字符串,没有替换。 我也尝试使用: 和replaceAll方法。 有什么建议? 问题答案: 字符串在Java中是不可变的。不会 更改 您调用它的字符串-它会 返回 更改后的新字符串。所以你要: (对于要在其上“显示”更改的 所有 方法,这都是不变的,因此也是如此。)

  • 问题内容: 问题是需要替换给定字符串中的单个字符,同时保留字符串中的其他字符。 代码是: 问题答案: 您几乎做到了,只需在循环中添加一个计数器即可: