21 lines
700 B
Plaintext
21 lines
700 B
Plaintext
Module CharacterLength
|
|
Function GetUTF16CodeUnitsLength(s As String) As Integer
|
|
Return s.Length
|
|
End Function
|
|
|
|
Private Function GetUTF16SurrogatePairCount(s As String) As Integer
|
|
GetUTF16SurrogatePairCount = 0
|
|
For i = 1 To s.Length - 1
|
|
If Char.IsSurrogatePair(s(i - 1), s(i)) Then GetUTF16SurrogatePairCount += 1
|
|
Next
|
|
End Function
|
|
|
|
Function GetCharacterLength_FromUTF16(s As String) As Integer
|
|
Return GetUTF16CodeUnitsLength(s) - GetUTF16SurrogatePairCount(s)
|
|
End Function
|
|
|
|
Function GetCharacterLength_FromUTF32(s As String) As Integer
|
|
Return GetByteLength(s, Text.Encoding.UTF32) \ 4
|
|
End Function
|
|
End Module
|