vbs中replace的用法?

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

如何将这一行符号中两个“3”中间的“1”换成“0”
也就是说如何替换某一行中固定位置的字符,而保留其他位置的字符不变???求解答
...全文
239 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中的内容就是按要求替换处理后的了。

7,762

社区成员

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

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