使用Jeb在ss64上发布的技巧将退格控制字符保存到变量中时,如果“重叠”退格,则会得到奇怪的结果。
然而,当出现“重叠”使用
我的问题是 - 以上的例子中,为什么我收到了这个输出而不是预期的
这个例子是在这里发起的一个代码高尔夫挑战:Backhanded^H^H^H^H^H^Hspaces(希望能获得缩短代码的任何提示)。
展开后可能如下所示:
@echo off
setLocal enableDelayedExpansion
for /F %%a in ('"prompt $H&echo on&for %%b in (1) do rem"') do set DEL=%%a
set s=%1
echo %s:^H=!DEL!%
基本上,它使用Jeb的技巧将退格键保存为变量,然后使用字符串操作将输入字符串中所有^H
的实例替换为该变量。这对于以下示例和类似的输入正确工作:
C:\>bsp.bat "testing^H^H^H test"
"test test"
然而,当出现“重叠”使用
^H
时,我得到了以下令人困惑(对我来说)的输出:C:\>bsp.bat "AAA^HB^H^H"
"A"B
我的问题是 - 以上的例子中,为什么我收到了这个输出而不是预期的
"A"
?