如何取得文本框中包含指定字符串的行

原创 2004年04月19日 00:10:00

      文本框属性为允许多行显示时,由于是软回车实现的分行,无法用SPLIT(TEXT1.TEXT,VBCRLF)准确地取出指定行的内容。本文利用SENDMESSAGE 系列函数,通过发送文本框消息,实现了获取包含指定字符串的行,并演示了如何获取文本框中文本总行数和任意指定行的文本内容。

'add a textbox with "multiline=true","scrollbars=2".

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 Declare Function SendMessageByNum Lib "USER32" _
    Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessageByString Lib "USER32" Alias _
    "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam _
     As Long, ByVal lParam As String) As Long

Private Const EM_LINEINDEX = &HBB
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_GETLINE = &HC4
Private Const EM_LINELENGTH = &HC1

Function GetLineText(ByVal txtbox As TextBox, ByVal LineIndex As Long) As String '返回指定行的内容
  Dim lc As Long, linechar As Long
  linechar = SendMessageByNum(txtbox.hWnd, EM_LINEINDEX, LineIndex, 0)
  lc = SendMessageByNum(txtbox.hWnd, EM_LINELENGTH, linechar, 0) + 1
  GetLineText = String(lc + 2, 0)
  Mid(GetLineText, 1, 1) = Chr(lc And &HFF)
  Mid(GetLineText, 2, 1) = Chr(lc / &H100)
  lc = SendMessageByString(txtbox.hWnd, EM_GETLINE, LineIndex, GetLineText)
  GetLineText = Left(GetLineText, lc)
End Function

 

Function getlinewithstr(ByVal txtbox As TextBox, ByVal mystr As String) As String
Dim linecount As Long, temp() As String, i As Long
linecount = SendMessage(txtbox.hWnd, EM_GETLINECOUNT, 0, 0) '返回行数
ReDim temp(1 To linecount)
For i = 1 To linecount
temp(i) = "第" & i & "行:" & GetLineText(txtbox, i - 1) '添加行号
Next
getlinewithstr = Join(Filter(temp, mystr), vbCrLf) ' 字符串过滤
Erase temp
End Function

Private Sub Command1_Click()
MsgBox getlinewithstr(Text1, "CSDN"), 0, "包含“CSDN”的行"
End Sub

Private Sub Form_Load()
Dim a(25) As String, i As Long
For i = 0 To 25
a(i) = String(50, Chr(i + 97))
Next
Text1.Text = Join(a, "CSDN")

End Sub

vb.net 正则表达式 取 固定格式的字符

vb.net 正则表达式 取 固定格式的字符:   原始字符串:strSqlTmp=”select * from A_TEST where a_data = '@1@' and b_link = ...
  • wang_cel
  • wang_cel
  • 2015年03月18日 15:53
  • 1334

如何取得文本框中包含指定字符串的行

 文本框属性为允许多行显示时,由于是软回车实现的分行,无法用SPLIT(TEXT1.TEXT,VBCRLF)准确地取出指定行的内容。本文利用SENDMESSAGE 系列函数,通过发送文本框消息,实现了...
  • hank212
  • hank212
  • 2006年04月28日 14:47
  • 740

Linux中awk抽取包含某字段的整行日志

命令示例: awk '{if($0~"listAuths") print}' xxx.log 解释说明:抽取xxx.log整个日志文件中,包含“listAuths”的行,打印输出 抽取效果: ...
  • hgg923
  • hgg923
  • 2016年05月11日 17:14
  • 4781

提取海量文本文件中含有指定字符串的行

在工作中遇到一个提取一个目录中所有文本文件中含有特定字符串的行,并将其写入一个文件,于是有了以下代码。 # -*- coding: utf8 -*- import os import sys imp...
  • sleep365
  • sleep365
  • 2014年02月15日 22:08
  • 1664

linux删除文件中含有某字符的行

sed -i -e '/string/d' file 脚本,从键盘输入删除含某字符行 #!/bin/sh FILENAME=file.txt # 可换为$1 if [ ! ...
  • wide288
  • wide288
  • 2014年01月09日 13:50
  • 9463

vim小技巧 -- 删除包含特定字符串的行

删除包含something的所有行 :g/something/d
  • mailyangy
  • mailyangy
  • 2013年05月27日 01:20
  • 8229

用shell从文件中提取指定字符串的行

#!/bin/bash  IFS=" " while read -r line  do    if [ "DROP TABLE" = ${line:0:10} ];    then...
  • Javascxl
  • Javascxl
  • 2014年04月21日 16:11
  • 1780

Python 查找含有特定单个或多个字符的行

1. Match Complete Lines That contain a Word (eg. error) (?im)^.*\berror\b.*$ 2. Match any lines Tha...
  • guaguastd
  • guaguastd
  • 2014年08月22日 10:44
  • 688

利用awk获取特定字符串所在行的内容

获取特定字符串所在行的内容 awk是强大的文档处理工具,是一门经典语言,利用脚本来运行awk的时候,脚本开头需要输入:#!/bin/awk -f,它和命令行输入的不同点是,在脚本里面不用在输入命令a...
  • fengjingge
  • fengjingge
  • 2014年02月17日 14:59
  • 2469

C语言找到所有输入行中包含特定字符串的行

#include #define MAXLINE 1000 /*maximum input line length*/ int getline(char line[], int max); ...
  • li_canhui
  • li_canhui
  • 2011年09月27日 19:54
  • 1383
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何取得文本框中包含指定字符串的行
举报原因:
原因补充:

(最多只允许输入30个字)