|
dj0733
初级用户
 
积分 138
发帖 55
注册 2007-2-2
状态 离线
|
『楼 主』:
Txt文件中如何用批理<8>替换为回车?
如题;;;
各位大侠有没有办法呢??
|

偶其实很喜欢批处理 |
|
2007-2-11 11:40 |
|
|
slore
铂金会员
      
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
2 楼』:
用脚本吧.
read
replace
write就好了.
|
|
2007-2-11 11:43 |
|
|
anqing
高级用户
   
积分 859
发帖 413
注册 2006-8-14
状态 离线
|
『第
3 楼』:
最近在学vbs,也遇到了这个命令replace
把我弄糊涂了
ff=replace(m,glhz(m),"")
m代表一个txt文件,glhz,代表一个截取的函数?
楼上的朋友,能讲一下这个命令吗?
|
|
2007-2-11 11:52 |
|
|
slore
铂金会员
      
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
4 楼』:
Replace函数
描述
返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。
语法
Replace(expression, find, replacewith[, start[, count[, compare]]])
Replace函数语法有如下几部分:
部分 描述
expression 必需的。字符串表达式,包含要替换的子字符串。
find 必需的。要搜索到的子字符串。
replacewith 必需的。用来替换的子字符串。
start 可选的。在表达式中子字符串搜索的开始位置。如果忽略,假定从1开始。
count 可选的。子字符串进行替换的次数。如果忽略,缺省值是 –1,它表明进行所有可能的替换。
compare 可选的。数字值,表示判别子字符串时所用的比较方式。关于其值,请参阅“设置值”部分。
设置值
compare参数的设置值如下:
常数 值 描述
vbUseCompareOption –1 使用Option Compare语句的设置值来执行比较。
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文字比较。
vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。
返回值
Replace的返回值如下:
如果 Replace返回值
expression长度为零 零长度字符串("")。
expression为Null 一个错误。
find长度为零 expression的复本。
replacewith长度为零 expression的复本,其中删除了所有出现的find 的字符串。
start > Len(expression) 长度为零的字符串。
count is 0 expression.的复本。
说明
Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。
简单的说
a=replace("sdfs-d-f9-34i-129-df-sf ","-"," ")
就是把 sdfs-d-f9-34i-129-df-sf 里面的-替换成空格返回
|
|
2007-2-11 12:18 |
|
|
anqing
高级用户
   
积分 859
发帖 413
注册 2006-8-14
状态 离线
|
『第
5 楼』:
谢谢,请再帮看看这个代码,尤其是最后部份不太明白?
dim jintian
Set ws=CreateObject("wscript.shell")
Set fso=CreateObject("scripting.filesystemobject")
Set fle=fso.opentextfile(dateadd("d",-6,date) & ".txt")
Do While fle.atendofstream<>true
m=fle.readline
ff=replace(m,glhz(m),"")
s=s & chae(ff,glhz(m)) & vbcrlf
loop
fle.close
Set file=fso.createtextfile(date & ".txt")
file.write jintian
file.close
Set file=fso.createtextfile("今天和昨天的差额.txt")
file.write s
file.close
ws.run "notepad.exe 今天和昨天的差额.txt",,true
msgbox "请查看【" & date & ".txt】文件,看看输入是否正确。",4096+48,"操作完成"
Function chae(xm,je)
do until a=1
sdf=inputbox("请输入【" & xm & "】的金额:",xm)
if sdf="" then
wscript.quit
elseif IsNumeric(sdf)<>true then
msgbox "输入错误,请重新输入。",16+4096,"错误"
else
a=1
end if
loop
if sdf>0 then
chae=xm & sdf-je
end if
jintian=jintian & xm & sdf &vbcrlf
a=0
End Function
Function glhz(zhifu)
a=Len(zhifu)
For i=1 To a
b=Mid(zhifu,i,1)
If IsNumeric(b)=True then
glhz=glhz&Mid(zhifu,i,1)
End if
next
end Function
最后听部分有人曾经讲过是截取字符串的作用。
但这里,m代表一个文本文件。
2007-2-1
水电费:100
合同金:100
外援费:100
|
|
2007-2-11 22:31 |
|
|
jmz573515
银牌会员
    
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
『第
6 楼』:
Function glhz(zhifu) '这是一个自定义函数(声明一个新的函数)
...
end Function
|
|
2007-2-11 23:09 |
|
|
anqing
高级用户
   
积分 859
发帖 413
注册 2006-8-14
状态 离线
|
『第
7 楼』:
这个我知道,
主要是它的作用?
能否加上注释
|
|
2007-2-11 23:12 |
|
|
jmz573515
银牌会员
    
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
『第
8 楼』:
Function glhz(zhifu) '自定义函数
a=Len(zhifu) '看到上面这一行(ff=replace(m,glhz(m),""))了吗?所以这里的len(zhifu)=len(m)
For i=1 To a
b=Mid(zhifu,i,1) '相当于b=mid(m,i,1)
If IsNumeric(b)=True then '判断b是不是数字
glhz=glhz&Mid(zhifu,i,1)
End if
next
end Function
|
|
2007-2-11 23:17 |
|
|
anqing
高级用户
   
积分 859
发帖 413
注册 2006-8-14
状态 离线
|
『第
9 楼』:
这些也知道了,
不知道的是:
m是一个txt文件,len是如何在txt取值的,是取出名称,还是数字呀?
2007-2-1
水电费:100
合同金:100
外援费:100
一开始,我就知道m=zhifu
如果是a=replace("sdfs-d-f9-34i-129-df-sf ","-"," ")
就是把 sdfs-d-f9-34i-129-df-sf 里面的-替换成空格返回
能理解
换成txt,就不好理解了
所以,关于len,mid就不懂了,以至于看不懂最后一段,这是要点的地方!!
|
|
2007-2-11 23:37 |
|
|
jmz573515
银牌会员
    
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
『第
10 楼』:
建议你还是看一下,帮助里的len和mid怎么应用吧,有些东西要自己体会,不是我不想帮你,有些东西用嘴说真的说不太清楚,8好意思~
|
|
2007-2-11 23:43 |
|
|
anqing
高级用户
   
积分 859
发帖 413
注册 2006-8-14
状态 离线
|
『第
11 楼』:
返回字符串内字符的数目,或是存储一变量所需的字节数。
Len(string | varname)
参数
string
任意有效的字符串表达式。如果 string 参数包含 Null,则返回 Null。
Varname
任意有效的变量名。如果 varname 参数包含 Null,则返回 Null。
说明
下面的示例利用 Len 函数返回字符串中的字符数目:
Dim MyString
MyString = Len("VBSCRIPT") 'MyString 包含 8。
注意 LenB 函数与包含在字符串中的字节数据一起使用。LenB 不是返回字符串中的字符数,而是返回用于代表字符串的字节数。
从字符串中返回指定数目的字符。
Mid(string, start[, length])
参数
string
字符串表达式,从中返回字符。如果 string 包含 Null,则返回 Null。
Start
string 中被提取的字符部分的开始位置。如果 start 超过了 string 中字符的数目,Mid 将返回零长度字符串 ("")。
Length
要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到字符串结束的所有字符。
说明
要判断 string 中字符的数目,可使用 Len 函数。
下面的示例利用 Mid 函数返回字符串中从第四个字符开始的六个字符:
Dim MyVar
MyVar = Mid("VB脚本is fun!", 4, 6) 'MyVar 包含 "Script"。
注意 MidB 函数与包含在字符串中的字节数据一起使用。其参数不是指定字符数,而是字节数。
这些例子全是字符串,而不是txt文件呀?
|
|
2007-2-11 23:47 |
|
|
jmz573515
银牌会员
    
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
『第
12 楼』:
字符串也可以是变量
m就是一个变量它等于file.readline也就是在TXT文件里读取了一行,这回明白了吗?
(是循环读取的所以m的值总是变的)
再不明白我也没办法了 :(
|
|
2007-2-11 23:53 |
|
|
anqing
高级用户
   
积分 859
发帖 413
注册 2006-8-14
状态 离线
|
『第
13 楼』:
大体明白了
能不能,给出一个更感观的例子
就是在txt中,通过这个函数截取后,前后的不同地方?
|
|
2007-2-11 23:55 |
|
|
dj0733
初级用户
 
积分 138
发帖 55
注册 2007-2-2
状态 离线
|
『第
14 楼』:
我的问题还没有解决呢!!呵呵
|

偶其实很喜欢批处理 |
|
2007-2-12 00:26 |
|
|
anqing
高级用户
   
积分 859
发帖 413
注册 2006-8-14
状态 离线
|
|
2007-2-12 00:28 |
|