读取txt文本换行的问题!

Lukeskywalker 2012-11-09 04:08:30
一个txt文本文档一行比较长,我想以每行10个字符读取到textbox中。也就是每10个字符换一行,原本有的换行仍然保留。

如下
txt文本中内容

一个txt文本文档一行比较长,我想以每行10个字符读取到textbox中。
也就是每10个字符换一行,原本有的换行仍然保留。

我想达到这样的效果(一个中文算2个字符吧,如果字符数是奇数的话,就加一个字符)
一个txt文本
文档一行比
较长,我想
以每行10个
字符读取到
textbox中

也就是每10
个字符换一
行,原本有
的换行仍然
保留。
...全文
482 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2012-11-13
  • 打赏
  • 举报
回复
Private Sub Command3_Click()
Dim a As String
Dim b As String
Dim s As String
Dim n As Long
Dim m As Long
Dim i As Long
Dim j As Long

For i = LBound(MyStr) To UBound(MyStr)
a = MyStr(i)
n = 0

For j = 1 To Len(a)
b = Mid(a, j, 1)
If Asc(b) < 0 Then
m = 2
Else
m = 1
End If
If n + m > 10 Then
s = s & vbCrLf
n = 0
End If

s = s & b
n = n + m
Next

s = s & vbCrLf
Next

Text1.Text = s
End Sub


又:楼主给出的例子有问题
前一个 11 字符宽换行,后一个 9 字符宽换行。
[Quote= 楼主 Lukeskywalker 的回复:]
一个txt文本
...
textbox中
。[/Quote]
of123 2012-11-13
  • 打赏
  • 举报
回复

Dim i As Integer, strTmp As String

    Text1 = ""
    For i = 1 To Len(myStr)
        strTmp = strTmp & Mid(myStr, i, 1)
        If LenB(StrConv(strTmp, vbFromUnicode)) > 9 Then
            Text1 = Text1 & strTmp & vbNewLine
            strTmp = ""
        End If
    Next i
    
    If strTmp > "" Then Text1 = Text1 & strTmp
Lukeskywalker 2012-11-12
  • 打赏
  • 举报
回复
有人帮忙看看吗?
嗷嗷叫的老马 2012-11-12
  • 打赏
  • 举报
回复
用GetTextExtentPoint32取得字符串长度,就可以一个一个字符拼上去,再测试长度从而决定在什么地方插入换行符了.
Lukeskywalker 2012-11-11
  • 打赏
  • 举报
回复
textbox控件是不行的,我的目的是想用printer print "获取文本",所以只能用加换行符的方法。请问该如何做呢?
Lukeskywalker 2012-11-11
  • 打赏
  • 举报
回复
用如下代码可以实现增加换行符(vbcrlf)进行换行,但是发现代码把换行符也算作字符来处理了!
Private Sub Command3_Click()
  Dim a As String, n As Integer, b As String
  Text1.Text = ""
  For i = 1 To UBound(MyStr)
    a = MyStr(i) & vbCrLf
    For j = 1 To Len(a)
    b = Mid(a, j, 1)
    If Asc(b) < 0 Then
      If n >= 40 Then
        s = s & vbCrLf
        n = 2
      Else
        n = n + 2
      End If
    Else
      If n = 41 Then
        s = s & vbCrLf
        n = 1
      Else
      n = n + 1
      End If
    End If
    s = s & b
    Next
    Text1.Text = s
  Next
End Sub
这样显示效果就会乱掉,比如第一行,第二行两行加起来有25个字,在第20个字时会换一行,剩下5个字符会在第二行显示,第三行则会在大概15个字的时候换行!请教一下这个代码应该这样写啊! 另外我的MyStr(i)是从一个文本文档中逐行读取进来的! 非常改写
of123 2012-11-09
  • 打赏
  • 举报
回复
最简单的方式,是将 TextBox 控件压扁,使之仅能容纳你所需的宽度,并设置为 MultiLine = True。 麻烦一点的,是插入换行符。麻烦之处是要判断插入点,不能在一个汉字的中间。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧