回 帖 发 新 帖 刷新版面

主题:vb6如何判断并删除字符串首行的空行或空格

Text2.Text = ""                                         '初始测试结果为空
str1 = LTrim(Text1.Text)                                '去除首行空格

k = 0                                                   '初始计数器为0
If str1 <> "" Then                                      '如果要处理的字符串不为空,
    Do While Split(str1, vbCrLf)(k) = ""                '从第一行开始,如果为空,则循环下一行,计数器加1,
        k = k + 1
    Loop
    str2 = Split(str1, vbCrLf)(k)                       '如果当前行不为空行时,退出循环,并把这行赋值给str2
    For x = k + 1 To UBound(Split(str1, vbCrLf))        '从下一行循环到最后一行,str2=本身+回车+当前行的内容
        str2 = str2 & vbCrLf & Split(str1, vbCrLf)(x)
    Next

    Text2.Text = str2                                   'text2是得到的结果

End If


上面是我目前的方法,总感觉我这个方法太麻烦,希望能有好用的方法,比如通过字符串转为16进制或其他可以识别回车的方式来删除开始的空行。不知正则效率怎么样,感觉可能也不会太好。

第一次发帖,多多关照

回复列表 (共5个回复)

沙发

“通过字符串转为16进制或其他可以识别回车”跟if s=vblfcr then是一样的,没有必要。

至于你说的“正则”,我多次听说,但从没有用过,就不知道优劣了。

我看在你的基础上可以这样修改:

s=text1

do

    s=ltrim(s)

    if left(s)=vbcrlf then

         s=right(s,len(s-1))

   else

         exit do

    endif

loop 

text2=s

板凳

if left(s)=vbcrlf then

应该是

 if left(s,1)=vbcrlf then

呵呵

3 楼

另外,如果考虑到有可能是全空行的文本的话,可以将

loop

改为

loop until s=“”


4 楼

if left(s,1)=vbcrlf then 好像是不行的呀,字符串是认不出vbcrlf的。你试试。

5 楼

Private Sub Command1_Click()
    s = Text1
    Do
        s = LTrim(s)
        a = Asc(Left(s, 1))
        If a = 13 Or a = 10 Then
             s = Right(s, Len(s) - 1)
       Else
             Exit Do
        End If
    Loop
    Text2 = s
End Sub

我来回复

您尚未登录,请登录后再回复。点此登录或注册