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 函数的内部工作有关,但我需要它才能正常工作。
有谁知道这个问题的解决方法?
这不是一个错误。
Replace()没有任何特殊的“环视”功能。它只是遍历输入字符串直到找到~~。然后跳转到匹配文本之后的下一个字符并继续搜索。结果只打了两场比赛。
听起来更像是要求在任意两个波形符“~~”之间插入“X”。具有非捕获前瞻功能的正则表达式应该可以实现这一点。
reReplace(test, '~(?=~)','~X','all')
Run Code Online (Sandbox Code Playgroud)
解释
~查找波形符(?=~).. 后面是另一个波形符