vbs中replace的用法?

曲建华 2018-12-12 01:05:47

如何将这一行符号中两个“3”中间的“1”换成“0”
也就是说如何替换某一行中固定位置的字符,而保留其他位置的字符不变???求解答
...全文
240 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
曲建华 2018-12-12
  • 打赏
  • 举报
回复
引用 5 楼 舉杯邀明月 的回复:
3楼那样的代码,就可以自己任意指定“替换范围”。 另外,还可以先判断一下“原来是什么字符”,再决定是否替换成别的…………
引用 6 楼 舉杯邀明月 的回复:
[quote=引用 4 楼 曲建华 的回复:] [quote=引用 2 楼 曲建华 的回复:] [quote=引用 1 楼 舉杯邀明月 的回复:] 这个只能把“中间部分”截取出来进行替换处理,然后进行“合并”得到结果。 参考一下:
Dim sa, sb, sc, sd, i, k

sa = "11111311111131111"
k = InStr(sa, "3")
i = InStr(k + 1, sa, "3")
sb = Left(sa, k)
sc = Mid(sa, k + 1, i - k - 1)
sd = Mid(sa, i)
sa = sb & Replace$(sc, "1", "0") & sd
Call MsgBox(sa, 64)
第4行,就是找“起始位置”; 第5行,找“结束位置”; 第6到8行,把 前面部分、中间部分、后面部分 这三段,分别截取出来; 第9行,进行替换处理和字符串拼合,这时sa中的内容就是按要求替换处理后的了。
谢谢 还有一个问题,假如全是“1”,中间没有“3”,我想在每一行的固定位置替换怎么办呢?我看你这一应该是在找“3”做参考。[/quote] 另外,如何我想在一行字符中计算有多少个“1”,返回“1”的数目,该怎么做。用什么函数! 谢谢[/quote] 可以象3楼那样,“从头到尾”遍历一下字符串,判断第i个字符是否为1并计数。 也可以这样: n = len(sa) - len(replace(sa,"1","") 这个“差值”就是字符1的个数了。 [/quote] 感谢! 我先温习下今天所学,哈哈!
舉杯邀明月 2018-12-12
  • 打赏
  • 举报
回复
引用 4 楼 曲建华 的回复:
[quote=引用 2 楼 曲建华 的回复:]
[quote=引用 1 楼 舉杯邀明月 的回复:]
这个只能把“中间部分”截取出来进行替换处理,然后进行“合并”得到结果。

参考一下:
Dim sa, sb, sc, sd, i, k

sa = "11111311111131111"
k = InStr(sa, "3")
i = InStr(k + 1, sa, "3")
sb = Left(sa, k)
sc = Mid(sa, k + 1, i - k - 1)
sd = Mid(sa, i)
sa = sb & Replace$(sc, "1", "0") & sd
Call MsgBox(sa, 64)

第4行,就是找“起始位置”;
第5行,找“结束位置”;
第6到8行,把 前面部分、中间部分、后面部分 这三段,分别截取出来;
第9行,进行替换处理和字符串拼合,这时sa中的内容就是按要求替换处理后的了。

谢谢 还有一个问题,假如全是“1”,中间没有“3”,我想在每一行的固定位置替换怎么办呢?我看你这一应该是在找“3”做参考。[/quote]
另外,如何我想在一行字符中计算有多少个“1”,返回“1”的数目,该怎么做。用什么函数! 谢谢[/quote]

可以象3楼那样,“从头到尾”遍历一下字符串,判断第i个字符是否为1并计数。

也可以这样:
n = len(sa) - len(replace(sa,"1","")
这个“差值”就是字符1的个数了。
舉杯邀明月 2018-12-12
  • 打赏
  • 举报
回复
3楼那样的代码,就可以自己任意指定“替换范围”。

另外,还可以先判断一下“原来是什么字符”,再决定是否替换成别的…………
曲建华 2018-12-12
  • 打赏
  • 举报
回复
引用 2 楼 曲建华 的回复:
[quote=引用 1 楼 舉杯邀明月 的回复:] 这个只能把“中间部分”截取出来进行替换处理,然后进行“合并”得到结果。 参考一下:
Dim sa, sb, sc, sd, i, k

sa = "11111311111131111"
k = InStr(sa, "3")
i = InStr(k + 1, sa, "3")
sb = Left(sa, k)
sc = Mid(sa, k + 1, i - k - 1)
sd = Mid(sa, i)
sa = sb & Replace$(sc, "1", "0") & sd
Call MsgBox(sa, 64)
第4行,就是找“起始位置”; 第5行,找“结束位置”; 第6到8行,把 前面部分、中间部分、后面部分 这三段,分别截取出来; 第9行,进行替换处理和字符串拼合,这时sa中的内容就是按要求替换处理后的了。
谢谢 还有一个问题,假如全是“1”,中间没有“3”,我想在每一行的固定位置替换怎么办呢?我看你这一应该是在找“3”做参考。[/quote] 另外,如何我想在一行字符中计算有多少个“1”,返回“1”的数目,该怎么做。用什么函数! 谢谢
舉杯邀明月 2018-12-12
  • 打赏
  • 举报
回复
sa = "11111311111131111"
For i = 8 To 12
Mid(sa, i, 1) = "0"
Next


这段代码:
把 sa 内容的第8个到第12个字符,替换成"0" (不管它原来是什么字符)。

曲建华 2018-12-12
  • 打赏
  • 举报
回复
引用 1 楼 舉杯邀明月 的回复:
这个只能把“中间部分”截取出来进行替换处理,然后进行“合并”得到结果。 参考一下:
Dim sa, sb, sc, sd, i, k

sa = "11111311111131111"
k = InStr(sa, "3")
i = InStr(k + 1, sa, "3")
sb = Left(sa, k)
sc = Mid(sa, k + 1, i - k - 1)
sd = Mid(sa, i)
sa = sb & Replace$(sc, "1", "0") & sd
Call MsgBox(sa, 64)
第4行,就是找“起始位置”; 第5行,找“结束位置”; 第6到8行,把 前面部分、中间部分、后面部分 这三段,分别截取出来; 第9行,进行替换处理和字符串拼合,这时sa中的内容就是按要求替换处理后的了。
谢谢 还有一个问题,假如全是“1”,中间没有“3”,我想在每一行的固定位置替换怎么办呢?我看你这一应该是在找“3”做参考。
舉杯邀明月 2018-12-12
  • 打赏
  • 举报
回复
这个只能把“中间部分”截取出来进行替换处理,然后进行“合并”得到结果。

参考一下:
Dim sa, sb, sc, sd, i, k

sa = "11111311111131111"
k = InStr(sa, "3")
i = InStr(k + 1, sa, "3")
sb = Left(sa, k)
sc = Mid(sa, k + 1, i - k - 1)
sd = Mid(sa, i)
sa = sb & Replace$(sc, "1", "0") & sd
Call MsgBox(sa, 64)

第4行,就是找“起始位置”;
第5行,找“结束位置”;
第6到8行,把 前面部分、中间部分、后面部分 这三段,分别截取出来;
第9行,进行替换处理和字符串拼合,这时sa中的内容就是按要求替换处理后的了。
vbs 批量修改文件,bat 批处理文件调用执行vbs,并在cmd窗口打印返回值(vbs运行结果) 使用vbs 脚本对工作目录下的字符串进行替换并统计被修改的文件数主调的批处理方法将捕捉该vbs脚本运行后的结果并打印在cmd窗口。 示例代码(t.vbs)如下: Set fso=Wscript.CreateObject("Scripting.FileSystemObject") flrName="D:\Workspace\src\" 'dir that you need deal with count=0 'get the count of modified files function Traversal(dir) set flr=fso.getfolder(dir) set fs=flr.files findstr1="[assembly: SecurityTransparent]" 'find string that need to be replaced findstr2=replace(findstr1," ","") 'becasuse there isspace char in findstr,so add this findstr2 replaceStr="[assembly: AllowPartiallyTrustedCallers()]" 'destination stringin replace for each f in fs if lcase(f.name)="assemblyinfo.cs" then set findf=fso.opentextfile(f) do while findf.atendofstream=false d=f.datelastmodified 'get modified datetime of current file alltext=findf.readall if(InStr(alltext,findstr1)> 0 ) then s=replace(alltext,findstr1, replaceStr) count=count+1 findf.close() 'If no findstr2, delete the following elseif block elseif(InStr(alltext,findstr2) > 0) then s=replace(alltext,findstr2, replaceStr) count=count+1 findf.close() else findf.close() exit do end if set r=fso.opentextfile(f, 2, true) r.write s d2=f.datelastmodified if d2>=d then exit do loop end if next set fs=flr.subfolders for each f in fs Traversal(f.path) next end function Traversal(flrName) 'msgbox ("Done! "& count &" files were modified successfully.") wscript.echo "Done! "& count & " files were modified successfully." 'value popup by"wscript.echo" can be received by .bat easily Wscript.quit count 'this variable "count" in order to get a return value by%ErrorLevel% 上面的操作只执行了处理文件的步骤 如果不需要提取运行结果,在 批处理 或主调vbs脚本里直接 运行该vbs文件就行了。 如果在bat 里调用该vbs脚本,并希望打印出提示信息 可以用下面的两种方法来实现: 1,在bat加入如下代码
VBScript 语言参考 特性信息 字母顺序关健字列表 常数 错误 事件 函数 方法 对象 运算符 属性 语句 欢迎使用 VBScript 语言参考 通过对信息进行分组,可以使您方便地研究 Visual Basic 脚本的各个主题。 可以在“字母顺序关键字列表”找到 VBScript 语言的所有主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示该标题所包含的项目列表。从该列表选择要查看的主题。打开所选主题之后,就能够很容易地链接到其他相关章节。 请尽情浏览 JScript 语言参考的各个部分,您会发现 VBScript 语言有多么丰富。 特性 说明 版本信息 按主机应用排序的 VBScript 版本列表和按版本排序的特性列表. VBScript 特性 VBScript 最新特性列表 未包含在 VBScript 的 VBA 特性 VBScript 最新特性列表:未包含在 VBScript 的应用程序编辑。 未包含在 VBA VBScript 特性 未包含在 Visual Basic VBScript 特性列表:应用程序编辑。 Microsoft Scripting 运行时特性 VBScript 最新的 Scripting 运行时特性列表。 语言元素 说明 Abs 函数 返回数的绝对值。 加法运算符 (+) 两数相加。 And 运算符 执行两个表达式的逻辑连接。 Array 函数 返回含一数组的 变体 。 Asc 函数 返回字符串首字母的 ANSI 字符代码。 赋值运算符 (=) 给变量或属性赋值。 Atn 函数 返回数的反正切值。 Call 语句 将控制移交 Sub 或 Function 过程。 CBool 函数 返回已被转换为 Boolean 子类型的变体的表达式。 CByte 函数 返回已被转换为字节子类型的变体的表达式。 CCur 函数 返回已被转换为货币子类型的变体的表达式。 CDate 函数 返回已被转换为日期子类型的变体的表达式。 CDbl 函数 返回已被转换为双精度子类型的变体的表达式。 Chr 函数 返回指定 ANSI 字符码的字符。 CInt 函数 返回已被转换为整数子类型的变体的表达式。 Class 对象 提供对已创建的类的事件的访问。 Class 语句 声明类名 Clear 方法 清除 Err 对象的所有属性设置。 CLng 函数 返回已被转换为 Long 子类型的变体的表达式。 颜色常数 颜色常数列表。 比较常数 用于比较运算的常数列表。 连接运算符 (&) 强制两个表达式的字符串连接。 Const 语句 声明用于字母值的常数。 Cos 函数 返回角度的余弦值。 CreateObject 函数 创建并返回对“自动”对象的引用。 CSng 函数 返回已被转换为单精度子类型的变体的表达式。 CStr 函数 返回已被转换为字符串子类型的变体的表达式。 日期和时间常数 在日期和时间运算用来定义星期几和其他常数的常数列表。 日期格式常数 用于日期和时间格式的常数列表。 Date 函数 返回当前系统日期。 DateAdd 函数 返回加上了指定的时间间隔的日期。 DateDiff 函数 返回两个日期之间的间隔。 DatePart 函数 返回给定日期 的指定部分。 DateSerial 函数 返回指定年月日的 日期子类型的变体 。 DateValue 函数 返回日期子类型的变体 。 Day 函数 返回日期,取值范围为 1 至 31。 Description 属性 返回或者设置说明某个错误的字符串。 Dictionary 对象 存储数据键、项目对的对象。 Dim 语句 声明变量并分配存储空间。 除法运算符 (/) 两数相除并以浮点数格式返回商。 Do...Loop 语句 当条件为 True 或者当条件变为 True 时,重复一语句块。 Empty 表示尚未初始化的变量值。 Eqv 运算符 使两个表达式相等。 Erase 语句 重新初始化固定数组的元素并重新分配动态数组的存储空间。 Err 对象 含有关于运行时错误的信息。 Eval 函数 计算并返回表达式的值。 Execute 方法 根据指定的字符串,执行正则表达式的搜索。 Execute 语句 执行单个或更多的指定语句。 ExecuteGlobal 语句 执行一个或多个在全局脚本名字空间所指定的语句。 Exit 语句 退出 Do...Loop、For...Next

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧