标题: [问题求助] 【已解决】vbs:如何用vbs在特定字符下面插入空行 [打印本页]
作者: 思想之翼 时间: 2015-10-14 21:23 标题: 【已解决】vbs:如何用vbs在特定字符下面插入空行
本帖最后由 思想之翼 于 2015-10-15 13:13 编辑
下述vbs代码 是在 文本的每行数据下面 添加空行- Dim strPrompt, strInput
- strPrompt = "1.插入空行" & vbLf & "2.删除空行" & vbLf & vbLf & "输入1或2"
- Do while true
- strInput = InputBox(strPrompt, "", "2")
- If IsEmpty(strInput) Then
- WScript.Quit
- ElseIf strInput = "1" or strInput = "2" Then
- Exit Do
- End If
- Loop
- Dim fso, file, f, txt
- Set fso = CreateObject("Scripting.FileSystemObject")
- For Each file In fso.GetFolder(".").Files
- If LCase(Right(file, 4)) = ".txt" Then
- Set f = fso.OpenTextFile(file)
- txt = f.ReadAll
- f.Close
- Set f = Nothing
- If strInput = "1" Then
- txt = RegEx(txt, "\r\n", "$&$&")
- Else
- txt = RegEx(txt & vbCrLf, "(\s*\n)+", vbCrLf)
- If Left(txt, 2) = vbCrLf Then txt = Mid(txt, 3)
- End If
- fso.OpenTextFile(file, 2).Write txt
- End If
- Next
- MsgBox "OK"
- Function RegEx(s, pattern, s1)
- Dim re
- Set re = New RegExp
- re.Pattern = pattern
- re.Global = true
- RegEx = re.Replace(s, s1)
- End Function
复制代码
现在欲批量在若干文本:**;字符下面插入空行,处理后覆盖原文本,上述vbs如何修改?
待批量处理的若干文本数据格式如下:
[条件标识=205,温度=观测位置 限定条件 ]
{位置距离【人,名】,True,2,True}
1 2=3,
1 3=3,
1 4=5,
1 5=5
:**;
{位置距离【人,名】,True,2,True}
1 2=9,
1 3=3,
1 4=5,
2 3=5
:**;
{位置距离【人,名】,True,2,True}
1 2=3,
1 3=3,
1 4=5,
1 5=5
:**;
{位置距离【人,名】,True,2,True}
1 2=9,
1 3=3,
1 4=5,
2 3=5
:**;
作者: yu2n 时间: 2015-10-14 21:44
修改第20行的- txt = RegEx(txt, "\r\n", "$&$&")
复制代码
为- txt = RegEx(txt, "(:\*\*;)[\r\n]*", "$1\r\n\r\n")
复制代码
作者: 思想之翼 时间: 2015-10-14 21:50
本帖最后由 思想之翼 于 2015-10-14 21:53 编辑
回复 2# yu2n
感谢帮助。您的代码 运行结果是
[条件标识=205,温度=观测位置 限定条件 ]
{位置距离【人,名】,True,2,True}
1 2=3,
1 3=3,
1 4=5,
1 5=5
:**;\r\n\r\n{位置距离【人,名】,True,2,True}
1 2=9,
1 3=3,
1 4=5,
2 3=5
:**;\r\n\r\n{位置距离【人,名】,True,2,True}
1 2=3,
1 3=3,
1 4=5,
1 5=5
:**;\r\n\r\n{位置距离【人,名】,True,2,True}
1 2=9,
1 3=3,
1 4=5,
2 3=5
:**;\r\n\r\n
希望结果是
[条件标识=205,温度=观测位置 限定条件 ]
{位置距离【人,名】,True,2,True}
1 2=3,
1 3=3,
1 4=5,
1 5=5
:**;
{位置距离【人,名】,True,2,True}
1 2=9,
1 3=3,
1 4=5,
2 3=5
:**;
{位置距离【人,名】,True,2,True}
1 2=3,
1 3=3,
1 4=5,
1 5=5
:**;
{位置距离【人,名】,True,2,True}
1 2=9,
1 3=3,
1 4=5,
2 3=5
:**;
作者: pcl_test 时间: 2015-10-14 22:32
本帖最后由 pcl_test 于 2015-10-14 22:44 编辑
回复 3# 思想之翼 - txt = RegEx(txt, "(:\*\*;)\s*", "$1"&vbCrLf&vbCrLf)
复制代码
作者: CrLf 时间: 2015-10-15 00:46
回复 2# yu2n
真气走岔道了
作者: yu2n 时间: 2015-10-16 20:49
回复 5# CrLf
在 Notepad++ 测试好了,就忘了改写为 VBS 。
作者: 思想之翼 时间: 2015-11-7 16:28
本帖最后由 思想之翼 于 2015-11-7 16:30 编辑
回复 4# pcl_test
请教插入空行的问题
如果想在:**;下,插入一空行,上述代码修改为
txt = RegEx(txt, "(:\*\*;)\s*", "$1"&vbCrLf&vbCrLf)
如果想在:3-4;下,插入一空行,上述代码如何修改?
作者: 依山居 时间: 2015-11-7 16:56
三年都学不会一个正则表达式么。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |