楼 主
[已结]字符串或文本中的感叹号如何替换?
发表于 2008-12-25 21:50 · 中国 浙江 嘉兴 电信
初级用户
★
积分 30 发帖 24 注册 2008-10-20 16:30 UID 128872 性别 男
状态 离线
现有字符串
"真好呀!!!"
如何替换成
"真好呀@@@"
这是我的测试代码:
setlocal ENABLEDELAYEDEXPANSION
for /f %%a in (1.txt) do (
set str=%%a
set str=!str:^!=@!
echo !str!
pause)
[
Last edited by HAT on 2008-12-26 at 10:45 ]
第 2 楼
发表于 2008-12-25 21:53 · 美国 惠普HP
版主
★★★★★
积分 9,023 发帖 5,017 注册 2007-05-31 19:39 UID 89899 性别 男
状态 离线
set /?
Environment variable substitution has been enhanced as follows:
%PATH:str1=str2%
would expand the PATH environment variable, substituting each occurrence
of "str1" in the expanded result with "str2". "str2" can be the empty
string to effectively delete all occurrences of "str1" from the expanded
output. "str1" can begin with an asterisk, in which case it will match
everything from the beginning of the expanded output to the first
occurrence of the remaining portion of str1.
第 3 楼
帮我再看看,文本中怎么不行?
发表于 2008-12-25 22:02 · 中国 浙江 嘉兴 电信
初级用户
★
积分 30 发帖 24 注册 2008-10-20 16:30 UID 128872 性别 男
状态 离线
多谢了
为什么我直接在CMD窗口中行的
如果该字符串是在文本中,我用FOR去读取,再替换,怎么不成??
第 4 楼
Re 3楼
发表于 2008-12-25 22:03 · 美国 惠普HP
版主
★★★★★
积分 9,023 发帖 5,017 注册 2007-05-31 19:39 UID 89899 性别 男
状态 离线
第 5 楼
发表于 2008-12-25 22:05 · 中国 浙江 嘉兴 电信
初级用户
★
积分 30 发帖 24 注册 2008-10-20 16:30 UID 128872 性别 男
状态 离线
Originally posted by HAT at 2008-12-25 22:03:
把你的完整代码、详细问题描述更新到顶楼
文本的内容就只有上面这个字符串呀!
第 6 楼
发表于 2008-12-25 22:11 · 美国 惠普HP
版主
★★★★★
积分 9,023 发帖 5,017 注册 2007-05-31 19:39 UID 89899 性别 男
状态 离线
第 7 楼
还是得不到结果
发表于 2008-12-25 22:42 · 中国 浙江 嘉兴 电信
初级用户
★
积分 30 发帖 24 注册 2008-10-20 16:30 UID 128872 性别 男
状态 离线
认真看了一下,学了不少!
有些地方还是不太懂!!
但测试来测试去,还是不得解,这代码到底该怎么写呀?
for /f %%a in (1.txt) do (
set "str=%%a"
setlocal ENABLEDELAYEDEXPANSION
set str=!str:^!=@!
echo !str!
pause)
[
Last edited by lqh123108 on 2008-12-25 at 22:44 ]
第 8 楼
发表于 2008-12-25 23:28 · 中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335 发帖 574 注册 2007-11-27 12:50 UID 103929 性别 男 来自 广西
状态 离线
@echo off
for /f "delims=" %%a in ('more +7^<%~fs0') do (
set "str=%%a"
call set "str=%%str:!=@%%"
call echo.%%str%%
)
pause>nul&goto :eof
"真好呀!!!"
[
Last edited by moniuming on 2008-12-25 at 23:33 ]
本帖最近评分记录
(共 1 条)
点击查看详情
评分人 分数 时间
HAT
+2
2008-12-26 10:45
第 9 楼
发表于 2008-12-26 10:43 · 中国 浙江 嘉兴 海宁市 电信
初级用户
★
积分 30 发帖 24 注册 2008-10-20 16:30 UID 128872 性别 男
状态 离线
多谢猫兄的指点
谢了
针对文件通过! OK!
for /f "delims=" %%a in (1.txt) do (
set "str=%%a"
call set "str=%%str:!=@%%"
call echo.%%str%%
)
pause>nul&goto :eof
看来,文本中的感叹号的替换不能启用变量延迟,而应该使用跳出循环的办法,防止歧义!
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正