vb 如何删除不含特定字符的行 如图

来源:百度知道 编辑:UC知道 时间:2024/06/03 22:46:47
文本框1内容如下:
(08:12,2) [查看全文]
8月24日汇市交易提示
今日财经数据

(08-24,393) [查看全文]
8月23日汇市交易提示
今日财经数据

(08-23,416) [查看全文]
8月22日汇市交易提示
今日财经数据

(08-22,363) [查看全文]
8月21日汇市交易提示
今日财经数据

(08-21,379) [查看全文]
8月20日汇市交易提示
今日财经数据

(08-18,421) [查看全文

删除掉不含 08-22 的行,输出到文本框2,成为:

(08-22,363) [查看全文]

也就是说只保留含有字符 08-22 的行.

谢谢

'form 中放2个textbox,都不改名,并且大小调大一点,scrollbars调成both,multiline调成true。

Const EM_GETLINECOUNT = &HBA

Const EM_GETLINE = &HC4
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Function GetaLine(Text1 As TextBox, ByVal ntx As Long) As String
Dim str5(255) As Byte '如果字串大于255 字节请自行增加这个Byte的大小
Dim str6 As String, i As Long

str5(0) = 255 '字串的前两个Byte存该字串的最大长度
str5(1) = 255
i = SendMessage(Text1.hwnd, EM_GETLINE, ntx, str5(0))
If i = 0 Then
GetaLine = ""
Else
str6 = StrConv(str5, vbUnicode)
GetaLine = Left(str6, InStr(1, str6, Chr(0)) - 1)
End If
End Function

Private Sub Form_click()
ln = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0)
For i = 1 To ln
tmp = GetaLine(Text1, i - 1)
If InStr(tmp, "08-