在字符串中的每个字母之间插入空格

时间:2017-05-10 02:30:11

标签: windows batch-file cmd

我尝试批量编写代码,以便在字符串的每个字母之间插入空格。 例如,它可能会将John转换为J o h n

set "string=John"
set string_list=%string:= %
echo %string_list%

但我不知道如何在字母之间表明这一点。

3 个答案:

答案 0 :(得分:4)

使用%STRING:= %之类的空搜索字符串替换子字符串不起作用。

在每个字符后插入 SPACEs 的好方法是使用cmd /U将字符串转换为Unicode,即在每个字符后插入一个零字节,以及{ {1}},它将这些零字节作为换行符,因此它返回单独一行中的每个字符;最后,find循环捕获这些行并使用 SPACE 作为分隔符将它们累积在变量中:

for /F

答案 1 :(得分:2)

@ECHO OFF
SETLOCAL
set "string=John"
:seploop
set "string_list=%string:~-1% %string_list%" 
set "string=%string:~0,-1%"
if defined string goto seploop
set "string_list=%string_list:~0,-1%"
echo %string_list%
GOTO :EOF

在循环中,使用 Space 和累积列表将string的最后一个字符串起来,然后删除string的最后一个字符,直到它为空,然后删除列表中的最后一个字符作为循环的第一个迭代将添加一个多余的空间

答案 2 :(得分:0)

您可以使用JREPL.BAT - a regular expression text processing utility for the command line。 JREPL是纯脚本(混合批处理/ JScript),可以在任何Windows机器上从XP开始本地运行 - 不需要第三方exe文件。

如果您希望字符串包含前导和尾随空格,则:

jrepl "" " " /m /s string /rtn string

如果您只想在现有字符之间留出空格(没有前导/尾随空格),那么:

jrepl ".(?=.)" "$& " /m /s string /rtn string

由于JREPL本身就是一个批处理文件,因此如果将该命令放在另一个脚本中,则必须使用CALL JREPL。