RosettaCodeData/Task/String-length/Visual-Basic-.NET/string-length-2.visual

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