前端之家收集整理的这篇文章主要介绍了
中英字符判断VB,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Public Function FirstNoC(ByVal DescStr As String) As Dictionary(Of String,Integer)
Dim fNoCIdx As Integer = 0
Dim L = Len(DescStr$)
Dim CNum As Integer = 0
Dim fCnum As Integer = 0
Dim idx24 As Integer = 0
For n = 1 To L
If Asc(Mid$(DescStr$,n,1)) < 0 Then
fNoCIdx = 0
If n + CNum >= 24 And n + CNum < 26 Then
idx24 = n
End If
CNum += 1
Else
If fNoCIdx = 0 Then
fNoCIdx = n
fCnum = CNum
End If
End If
Next n
Dim dic As New Dictionary(Of String,Integer)
If idx24 > 0 Then
idx24 -= 1
End If
If fNoCIdx > 0 Then
fNoCIdx -= 1
End If
dic.Add("fullLen",L + CNum)
dic.Add("fNoCIdx",fNoCIdx)
dic.Add("CNum",CNum)
dic.Add("fCnum",fCnum)
dic.Add("idx24",idx24)
FirstNoC = dic
End Function
Public Function GetMatDesc(ByVal matDesc As String)
matDesc = matDesc.Replace(" "," ")
'汉字后面第一个字符fNoCIdx,前面有多少汉字fCnum,转码后长度fullLen,汉字数量CNum,Dim dic As Dictionary(Of String,Integer) = FirstNoC(matDesc)
'汉字后面第一个字符fNoCIdx
Dim fNoCIdx As Integer = dic("fNoCIdx")
'转码后总长度fullLen
Dim fullLen As Integer = dic("fullLen")
'汉字数量CNum
Dim CNum As Integer = dic("CNum")
'汉字后面第一个字符前汉字数量fCnum
Dim fCnum As Integer = dic("fCnum")
'前20个字符中的汉字数
Dim idx24 As Integer = dic("idx24")
'总长度LenMatDesc
Dim LenMatDesc As Integer = matDesc.Length
'汉字后面第一个字符前总长度LenMatDesc
Dim fClen As Integer = fCnum + fNoCIdx
'---------------------------------------
If fullLen = LenMatDesc Then
'新增空格隔断
Dim fSpace = matDesc.Split(" ")(0).Length
Dim sSpace As Integer = 0
If matDesc.Split(" ").Count > 1 Then
sSpace = matDesc.Split(" ")(1).Length
End If
If fSpace < 24 Then
If fSpace + sSpace < 24 Then
matDesc = Left(matDesc,fSpace + sSpace + 1) & "<br/>" & Right(matDesc,LenMatDesc - (fSpace + sSpace + 1))
Else
matDesc = Left(matDesc,fSpace) & "<br/>" & Right(matDesc,LenMatDesc - fSpace)
End If
Else
matDesc = Left(matDesc,24) & "<br/>" & Right(matDesc,LenMatDesc - 24)
End If
Else
'含有汉字
If fullLen / 2 <> LenMatDesc Then
'含有字符
If fNoCIdx < 24 Then
If fNoCIdx > 0 Then
'新增空格隔断
Dim fSpace = matDesc.Split(" ")(0).Length
Dim sSpace As Integer = 0
If matDesc.Split(" ").Count > 1 Then
sSpace = matDesc.Split(" ")(1).Length
End If
If fSpace > fNoCIdx Then
If idx24 <> 0 Then
If fSpace < idx24 Then
If fSpace + sSpace < idx24 Then
matDesc = Left(matDesc,fSpace + sSpace) & "<br/>" & Right(matDesc,LenMatDesc - (fSpace + sSpace))
Else
If fSpace > idx24 Then
matDesc = Left(matDesc,fNoCIdx) & "<br/>" & Right(matDesc,LenMatDesc - fNoCIdx)
Else
matDesc = Left(matDesc,LenMatDesc - fSpace)
End If
End If
Else
matDesc = Left(matDesc,idx24) & "<br/>" & Right(matDesc,LenMatDesc - idx24)
End If
Else
matDesc = Left(matDesc,LenMatDesc - fSpace)
End If
Else
If fSpace + sSpace < idx24 Then
matDesc = Left(matDesc,LenMatDesc - (fSpace + sSpace))
Else
matDesc = Left(matDesc,LenMatDesc - fSpace)
End If
End If
Else
If idx24 <> 0 Then matDesc = Left(matDesc,LenMatDesc - idx24)
End If
Else
If idx24 <> 0 Then matDesc = Left(matDesc,LenMatDesc - idx24)
End If
Else
'全部汉字
matDesc = Left(matDesc,12) & "<br/>" & Right(matDesc,LenMatDesc - 12)
End If
End If
Return matDesc
End Function
原文链接:https://www.f2er.com/vb/258702.html