gpt4 book ai didi

string - 控制字符和字符串操作

转载 作者:行者123 更新时间:2023-12-02 09:32:49 25 4
gpt4 key购买 nike

使用 ss64 by Jeb 上发布的技巧将退格控制字符保存到变量中 - 当“重叠”退格时我得到奇怪的结果。

该示例位于此处发布的代码高尔夫挑战中: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”

最佳答案

我不明白为什么“预期输出”应该是“A”。查看这个逐个字符的输出:

bsp.bat "AAA^HB^H^H"
"
"A
"AA
"AAA
"AAA <- backspace, the cursor is over last "A"
"AAB
"AAB <- backspace, the cursor is over last "B"
"AAB <- backspace, the cursor is over second "A"
"A"B

BS 字符只是将光标向后移动一个字符。 BackSpace 键(也称为“BackSpace echo”)的“标准行为”是“BackSpace+space+BackSpace”。

顺便说一句,这是我用来获取BS字符的方法:

for /F %%a in ('echo prompt $H ^| cmd') do set BS=%%a

关于string - 控制字符和字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31395521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com