'
'功能示例:ChgStr("abc汉字123数字456",18)="abc 汉字123 数字45"
'功能:当asc字符为奇数时,后补空格,最后取定长,若最后部分是半个汉字,则舍去
'
Function ChgStr(ByVal sData As String, ByVal iMaxLen As Integer) As String
Dim i As Integer
Dim iCount As Integer
Dim iAscb As Integer
Dim iLen As Integer
Dim sTemp As String
'补空格
iLen = LenB(StrConv(sData, vbFromUnicode, 2052))'求字节长度
For i = 1 To iLen
iAscb = AscB(MidB(StrConv(sData, vbFromUnicode, 2052), i, 1))'求字节asc
If iAscb < &H80 Then' not a asc char
iCount = iCount + 1
Else
If iCount / 2 <> iCount \ 2 Then'奇数
ChgStr = ChgStr + ChrB(&H20)'add a space
iCount = 0
End If
End If
ChgStr = ChgStr + ChrB(iAscb)'连接字符串
Next
'取定长
iCount = 0
iLen = LenB(StrConv(ChgStr, vbFromUnicode, 2052))
For i = iLen To 1 Step -1
iAscb = AscB(MidB(StrConv(sData, vbFromUnicode, 2052), i, 1))
If iAscb > &H7F Then
iCount = iCount + 1
Else
If iCount / 2 <> iCount \ 2 Then
ChgStr = MidB(StrConv(sData, vbFromUnicode, 2052), 1, iLen - 1)
Exit Function
End If
End If
Next
End Function
'功能示例:ChgStr("abc汉字123数字456",18)="abc 汉字123 数字45"
'功能:当asc字符为奇数时,后补空格,最后取定长,若最后部分是半个汉字,则舍去
'
Function ChgStr(ByVal sData As String, ByVal iMaxLen As Integer) As String
Dim i As Integer
Dim iCount As Integer
Dim iAscb As Integer
Dim iLen As Integer
Dim sTemp As String
'补空格
iLen = LenB(StrConv(sData, vbFromUnicode, 2052))'求字节长度
For i = 1 To iLen
iAscb = AscB(MidB(StrConv(sData, vbFromUnicode, 2052), i, 1))'求字节asc
If iAscb < &H80 Then' not a asc char
iCount = iCount + 1
Else
If iCount / 2 <> iCount \ 2 Then'奇数
ChgStr = ChgStr + ChrB(&H20)'add a space
iCount = 0
End If
End If
ChgStr = ChgStr + ChrB(iAscb)'连接字符串
Next
'取定长
iCount = 0
iLen = LenB(StrConv(ChgStr, vbFromUnicode, 2052))
For i = iLen To 1 Step -1
iAscb = AscB(MidB(StrConv(sData, vbFromUnicode, 2052), i, 1))
If iAscb > &H7F Then
iCount = iCount + 1
Else
If iCount / 2 <> iCount \ 2 Then
ChgStr = MidB(StrConv(sData, vbFromUnicode, 2052), 1, iLen - 1)
Exit Function
End If
End If
Next
End Function
解决方案 »
- VB6制成EXE执行文件之后的问题,急急急!!
- VB中如何调用eyeone.dll中的const char* I1_GetOption(const char *key)函数?
- VB连接带密码的ACCESS库(用ADODC控件进行连接),在什么地方输入密码呢?
- 一个温度检测系统
- 求解
- 麻烦大家帮帮忙啦
- 如何在一个字符串中添加一个字符串?up有分,在线等待
- 进程高手帮忙,请问如何实时捕获一个新进程,而不需要用户自己刷新进程列表?在线等候~~~~~~~~~~~~~~~~~~~~!
- 五笔字型所对的汉字内码
- 急!!!关于EXCEL
- 急!!用Formula One,在一个单元格内,怎样接收"回车"符?(在线关注)
- 关于远程图象传送的问题!(急)
Function ChgStr(ByVal sData As String, ByVal iMaxLen As Integer) As String
Dim i As Integer
Dim iCount As Integer
Dim iAscb As Integer
Dim iLen As Integer
Dim sTemp As String
Dim b As Long '标志 0 字母 1:数字
iLen = LenB(StrConv(sData, vbFromUnicode, 2052))
For i = 1 To iLen
iAscb = AscB(MidB(StrConv(sData, vbFromUnicode, 2052), i, 1))
If b = 0 Then
If iAscb < &H80 Then
iCount = iCount + 1
ChgStr = ChgStr & StrConv(ChrB(iAscb), vbUnicode)
Else
If iCount / 2 <> iCount \ 2 Then
ChgStr = ChgStr & StrConv(ChrB(&H20), vbUnicode)
iCount = 0
End If
b = 1
End If
Else
ChgStr = ChgStr & StrConv((MidB(StrConv(sData, vbFromUnicode, 2052), i - 1, 2)), vbUnicode)
b = 0
End If
Next
ChgStr = StrConv(LeftB(StrConv(ChgStr, vbFromUnicode, 2052), iMaxLen), vbUnicode)
End Function