重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这是VB在读多行文件时出现的问题,最后行多了换行字符。
创新互联网站建设公司,提供成都做网站、成都网站制作,网页设计,建网站,PHP网站建设等专业做网站服务;可快速的进行网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,是专业的做网站团队,希望更多企业前来合作!
可以用Left 函数来取去除最后换行字符的文本。
Left 函数
返回 Variant
(String),其中包含字符串中从左边算起指定数量的字符。
Len 函数
返回 Long,其中包含字符串内字符的数目。
Option Explicit
Dim s As String
Dim i As Long
Dim fname As String
Dim strWj As String
Private Sub Command1_Click()
' 设置“CancelError”为 True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' 设置标志
CommonDialog1.Flags = cdlOFNHideReadOnly
' 设置过滤器
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files" _
"(*.txt)|*.txt|Batch Files (*.bat)|*.bat"
' 指定缺省的过滤器
CommonDialog1.FilterIndex = 2
' 显示“打开”对话框
CommonDialog1.ShowOpen
' 显示选定文件的名字
'MsgBox CommonDialog1.FileName
Open CommonDialog1.FileName For Input As #1
Do Until EOF(1)
Line Input #1, s
strWj = strWj s vbCrLf
i = i + 1
Loop
Text3 = i
Close #1
Text1 = Left(strWj, Len(strWj) - 2) '去除读入文本多余的换行符。
Debug.Print Len(strWj)
Debug.Print Len(Text1)
Exit Sub
ErrHandler:
' 用户按了“取消”按钮
Exit Sub
End Sub
trim只能去除空字符,replace去除了所有的vbcrlf,要考虑保留字符串中间的vbcrlf,还要考虑字符串最后的换行符可能会有多个...如下是个思路:
Function myTrim(ByVal s As String) As String
Dim Length As Long
Dim Char As String
s = Trim(s)
Length = Len(s) + 1
Do
Length = Length - 1
Char = Mid(s, Length, 1)
Loop Until Char vbCr And Char vbLf
myTrim = Mid(s, 1, Length)
End Function
'测试
Private Sub Command1_Click()
Dim s As String
s = "ABC" vbCrLf vbCrLf
Debug.Print myTrim(s); Len(myTrim(s))
End Sub
Dim newfile As New List(Of String)
For Each line As String In System.IO.File.ReadAllLines("TextFile1.txt")
If Not line.StartsWith("3") Then newfile.Add(line)
Next
System.IO.File.WriteAllLines("TextFile1.txt", newfile)
建个集合,用System.IO.File的ReadAllLines读出所有内容,逐个判断,如果是需要的加入集合,如果是要删除的什么都不做,最后用WriteAllLines写入即可。
这里说明一下,上面那个代码是用来删除所有以3开头的文本行。