Board logo

标题: VBS怎样把逗号替换为竖线? [打印本页]

作者: kangta122    时间: 2011-1-28 14:34     标题: VBS怎样把逗号替换为竖线?

1,lv-ffx,"2,537",UDP,218.2
1,lv-ffx,"2,537",UDP,218.2
1,lv-ffx,"2,537",UDP,218.2
...

有这么一个.csv文件
怎样把","替换成"|",但("2,537")双引号内逗号并不进行替换,该如何实现啊???

多谢!!!
作者: asnahu    时间: 2011-1-28 15:47

  1. Dim strFile: strFile = "urfile"
  2. Dim FSO:     Set FSO = CreateObject("Scripting.FileSystemObject")
  3. Dim objFile: Set objFile = FSO.OpenTextFile(strFile)
  4. Dim strContent: strContent = objFile.Readall
  5. objFile.Close
  6. strContent = RegExp(strContent, ",", chr(124))
  7. strContent = RegExp(strContent, "([\d])[|]([\d])", "$1" & chr(44) & "$2")
  8. Function RegExp(str1, patrn, replStr)
  9.   Dim regEx  
  10.   Set regEx = New RegExp
  11.   regEx.Pattern = patrn
  12.   regEx.IgnoreCase = True
  13.   regEx.Global = True
  14.   RegExp = regEx.Replace(str1, replStr)
  15. End Function
  16. Dim objTextFile: Set objTextFile = FSO.CreateTextFile("op.txt")
  17. objTextFile.Write strContent
  18. Wscript.Quit
复制代码

[ 本帖最后由 asnahu 于 2011-1-28 15:55 编辑 ]
作者: kangta122    时间: 2011-1-28 16:04

原帖由 asnahu 于 2011-1-28 15:47 发表
Dim strFile: strFile = "urfile"
Dim FSO:     Set FSO = CreateObject("Scripting.FileSystemObject")
Dim objFile: Set objFile = FSO.OpenTextFile(strFile)
Dim strContent: strContent = objFile.Readall
...


能简单解释一下吗?看不太懂,谢谢!!
作者: asnahu    时间: 2011-1-28 16:09

打开文件全部读取并赋予变量strContent,然后对strContent进行正则替换:将全部“,”替换成“|”,将数字之间的“|”替换回来。
作者: kangta122    时间: 2011-1-28 16:13

能不能把双引号之间的“|”替换回来,而不是数字之间的啊!!
作者: asnahu    时间: 2011-1-28 16:45

  1. strContent = RegExp(strContent, "([\d])[|]([\d])", "$1" & chr(44) & "$2")
复制代码

改为:
  1. strContent = RegExp(strContent, chr(34) & "(.*)[|](.*)" & chr(34) , chr(34) & "$1,$2" & chr(34))
复制代码

作者: kangta122    时间: 2011-1-30 11:06

原帖由 asnahu 于 2011-1-28 16:45 发表
strContent = RegExp(strContent, "([\d])[|]([\d])", "$1" & chr(44) & "$2")
改为:
strContent = RegExp(strContent, chr(34) & "(.*)[|](.*)" & chr(34) , chr(34) & "$1,$2" & chr(34))


再请教一下:如果双引号之间有多个"|"这样就没法转换回来了。该如何处理啊??谢谢
作者: slore    时间: 2011-1-30 12:43

CSV
用EXCEL打开。。。然后复制后保存=。=
Tab字符随便换啦。
作者: kangta122    时间: 2011-1-30 13:02

原帖由 slore 于 2011-1-30 12:43 发表
CSV
用EXCEL打开。。。然后复制后保存=。=
Tab字符随便换啦。

这个是每天进行的操作,不可能都手工操作!!
作者: Batcher    时间: 2011-1-30 15:54     标题: 回复 7楼 的帖子

能否把所有问题在顶楼一次性描述清楚?
作者: slore    时间: 2011-1-31 21:15

原帖由 kangta122 于 2011-1-30 13:02 发表 这个是每天进行的操作,不可能都手工操作!!


VBS可以用excel对象。。。不过你这个要求用的话的确有点大材小用了。。。




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