如题.比如说我的TEXT里面有如下内容:
1234
12345
123456
回车后我要把12345换成54321(只修改第二行)先跟大家说说我的解决方案:
1. 用VB内置的REPLCE函数,可以更换字符串中的某个字符.但这个函数有这个问题,会把起始位置前的字符全部截掉.所以抛弃
2. 用sendmessage函数,得出输入字符的起始位置,再得出这一行有多少个字符.把之前的全取出来,再把之后的取出来,处理好后再全部连接起来.但这个方案有个不好的地方,就是如果TEXT里面的内容很多的话,这个方案就会有些慢,尤其是别人回一下车,就有延迟,会造成一些不好的感觉.所以在些求高手一个解决方案.不写代码也可以.如果不懂的别灌水了!(不知道sendmessage里面有没有常数是修改某行内容的)
1234
12345
123456
回车后我要把12345换成54321(只修改第二行)先跟大家说说我的解决方案:
1. 用VB内置的REPLCE函数,可以更换字符串中的某个字符.但这个函数有这个问题,会把起始位置前的字符全部截掉.所以抛弃
2. 用sendmessage函数,得出输入字符的起始位置,再得出这一行有多少个字符.把之前的全取出来,再把之后的取出来,处理好后再全部连接起来.但这个方案有个不好的地方,就是如果TEXT里面的内容很多的话,这个方案就会有些慢,尤其是别人回一下车,就有延迟,会造成一些不好的感觉.所以在些求高手一个解决方案.不写代码也可以.如果不懂的别灌水了!(不知道sendmessage里面有没有常数是修改某行内容的)
Private Sub Command1_Click()
Dim s$()
s = Split(Form1.Text1.Text, vbCrLf)
s(1) = Replace(s(1), "12345", "54321")
MsgBox Join(s, vbCrLf)
End Sub
用不着replace和sendmessage
dim StrAry() as string
'index 要修改的行,你的第2行
'value 要赋的值,你的54321
with text1
strary = split(.text)
strAry(index-1) = value
.text = join(StrAry,vbcrlf)
end with
'erase StrAry
只能直接取行,不能直接替换行,要用这样的多个API才能搞定的:procedure TMemoStrings.Put(Index: Integer; const S: string);
var
SelStart: Integer;
begin
SelStart := SendMessage(Memo.Handle, EM_LINEINDEX, Index, 0);
if SelStart >= 0 then
begin
SendMessage(Memo.Handle, EM_SETSEL, SelStart, SelStart +
SendMessage(Memo.Handle, EM_LINELENGTH, SelStart, 0));
SendMessage(Memo.Handle, EM_REPLACESEL, 0, Longint(PChar(S)));
end;
end;
方法1:Private Sub Command1_Click()
Dim s$(), i& 'i指定行
i = 2
s = Split(Form1.Text1.Text, vbCrLf)
s(i - 1) = "54321" '替换值
MsgBox Join(s, vbCrLf)
End Sub方法2:Private Sub Command1_Click()
Dim s$, n&, m&, s1$, s2$
n = 2 '指定行
s = Form1.Text1.Text
For i = 1 To n - 1
m = InStr(m + 1, s, vbCrLf)
Next i
s1 = Left(s, m)
s2 = Mid(s, InStr(m + 1, s, vbCrLf))
MsgBox s1 & "54321" & s2
End Sub
Dim i as Long
s=Text1.Text
i=InStr(s,"12345")
if i>0 then Mid(s,i,5)="54321"
Text1.Text=s
Dim aa$, i&, S
Private Sub Command1_Click()
aa = "1234" & vbCrLf & "12345" & vbCrLf & "123456"
S = Split(aa, vbCrLf)
S(1) = StrReverse(S(1))
aa = Join(S, vbCrLf)
MsgBox aa
End Sub