Board logo

标题: [问题求助] VBS怎样判断等号后面是数字就在数字前面加^(已解决) [打印本页]

作者: 窄口牛    时间: 2018-7-16 12:37     标题: VBS怎样判断等号后面是数字就在数字前面加^(已解决)

本帖最后由 窄口牛 于 2018-7-17 07:05 编辑

判断文本中所有的等号后面的第一个字符(略过空格)是数字的话,就在这个数字前面加个^。
作者: yhcfsr    时间: 2018-7-16 12:52

用支持正则的脚本语言可以轻松办到,纯BAT实现起来很麻烦
作者: codegay    时间: 2018-7-16 12:59

正则表达式:
(=\s*)(\d+)
\1^\2
作者: 窄口牛    时间: 2018-7-16 13:08

群里求来了判断,网上搜到替换,但是还是弄不出来,vbs确实玩不来。
作者: Batcher    时间: 2018-7-16 13:28

回复 4# 窄口牛


    把你求到的代码更新到顶楼,我试试。
作者: 窄口牛    时间: 2018-7-16 13:38

  1. Set regex=New RegExp
  2. regex.Global=True
  3. regex.Pattern="\=\s*(\d)"
  4. For Each i In regex.Execute(text)
  5. wsh.echo i.Submatches(0)
  6. Next
复制代码
  1. s=Split(text,"=")
  2. For i=1 To UBound(s)
  3. If IsNumeric(Left(LTrim(s(i)),1))then
  4. wsh.echo Left(LTrim(s(i)),1)
  5. else wsh.echo "no"
  6. End If
  7. Next
复制代码
  1. set fso = createobject("scripting.filesystemobject")
  2. ' 读取文件
  3. set stream = fso.opentextfile("a.txt",1)
  4. content = stream.readall()
  5. call stream.close()
  6. ' 替换字符串
  7. content = replace(content,"=","=^")
  8. content = replace(content,"*","♀")
  9. ' 保存文件
  10. set stream = fso.opentextfile("a.txt",2)
  11. call stream.write(content)
  12. call stream.close()
复制代码

作者: yhcfsr    时间: 2018-7-16 22:49

本帖最后由 yhcfsr 于 2018-7-16 22:51 编辑

BAT放在源目录下执行.记得备份源文件.
  1. @set @n=0/*&echo off
  2. dir /a-d/s/b *.txt|cscript -nologo -e:jscript "%~f0"
  3. pause&exit /b */
  4. var fso=new ActiveXObject('scripting.FileSystemObject');
  5. while(!WSH.StdIn.AtEndOfStream){
  6. var file=WSH.StdIn.ReadLine();
  7. var fo=fso.OpenTextFile(file,1);
  8. content=fo.ReadAll();
  9. content=content.replace(/(=\s*)(\d+)/g,'$1^$2');
  10. fo.close();
  11. fo=fso.OpenTextFile(file,2);
  12. fo.Write(content);
  13. fo.close();
  14. }
复制代码

作者: 窄口牛    时间: 2018-7-17 07:06

非常完美,谢谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2