Replace 函数中的 Coldfusion 错误

Bet*_*ock 1 coldfusion replace

这是我的程序:

<cfset test = 'a~b~~c~d~~~e'>
<cfset test2 = Replace(test, '~~','~X~','all')>
<cfoutput>  
        test  #test# 
   <br> test2 #test2# 
   <br>wanted: a~b~X~c~d~X~X~e
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

test a~b~~c~d~~~e  
test2 a~b~X~c~d~X~~e  
wanted: a~b~X~c~d~X~X~e   
Run Code Online (Sandbox Code Playgroud)

所以 test2 的输出是错误的这无疑与 Replace 函数的内部工作有关,但我需要它才能正常工作。

有谁知道这个问题的解决方法?

Age*_*eax 5

这不是一个错误。

Replace()没有任何特殊的“环视”功能。它只是遍历输入字符串直到找到~~。然后跳转到匹配文本之后的下一个字符并继续搜索。结果只打了两场比赛。

Replace 如何搜索字符串

听起来更像是要求在任意两个波形符“~~”之间插入“X”。具有非捕获前瞻功能的正则表达式应该可以实现这一点。

 reReplace(test, '~(?=~)','~X','all')
Run Code Online (Sandbox Code Playgroud)

解释

  • ~查找波形符
  • (?=~).. 后面是另一个波形符

演示示例