标题:[讨论]如何截取规定字节长度的文本串?可以结贴啦!
取消只看楼主
刨子头
Rank: 1
等 级:新手上路
威 望:1
帖 子:319
专家分:0
注 册:2007-9-24
 问题点数:0 回复次数:3 
[讨论]如何截取规定字节长度的文本串?可以结贴啦!

对于一段文字要截取一部分,截取后的字节长度要符合要求(等于或略小于某数,注意不是字符长度哦)。由于中西文的关系,不能直接用Len函数实现。我用了以下自定义函数,但存在的问题是对回车符等不能判断。
请问大家有没有更好的办法?

Public Function GetLenStr(strBeij As String, lenGuiZJ As Integer) As String
'截取规定字节长度字符,lenGuiZJ规定字节长度,strBeij要截取的文字串
Dim ZFlen As Integer, tmpSTR As String, lenZJS As Integer
'ZFlen表示字符长度,tmpSTR临时存截取后的文字串,lenZJS临时截取串的字节长度
ZFlen = Fix(lenGuiZJ / 2)
tmpSTR = Left(strBeij, ZFlen)
lenZJS = Len(StrConv(tmpSTR, vbFromUnicode)) * 2

Do While lenGuiZJ - lenZJS > 0
tmpSTR = Left(strBeij, ZFlen + (lenGuiZJ - lenZJS) / 2)
lenZJS = Len(StrConv(tmpSTR, vbFromUnicode)) * 2
Loop
GetLenStr = tmpSTR
End Function

[此贴子已经被作者于2007-10-9 16:19:32编辑过]

搜索更多相关主题的帖子: 规定字节 文本 长度 Integer String 
2007-10-07 20:39
刨子头
Rank: 1
等 级:新手上路
威 望:1
帖 子:319
专家分:0
注 册:2007-9-24
得分:0 
一个字一个字判断,也挺麻烦啊。
2007-10-07 20:50
刨子头
Rank: 1
等 级:新手上路
威 望:1
帖 子:319
专家分:0
注 册:2007-9-24
得分:0 
回车符是肯定还要的,不能去掉。
我那个函数在循环前,先判断一下原文字串的字节长度是否本身就小于规定数量,是就不用循环啦。
由于允许略小于规定数量,所以我是预先估计最多会有几个回车符,把它提前考虑在内。
2007-10-08 21:36
刨子头
Rank: 1
等 级:新手上路
威 望:1
帖 子:319
专家分:0
注 册:2007-9-24
得分:0 
以下是引用心中有剑在2007-10-9 9:55:02的发言:
GetLenStr = StrConv(LeftB(StrConv(strBeij, vbFromUnicode), lenGuiZJ), vbUnicode)
其实直接这句就可以了!

果然如此,这应是最好的方法了!
心中有剑,我佩服你啊!

2007-10-09 16:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-175684-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.376834 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved