Comprimir cadena
Publicado por Carlos (23 intervenciones) el 08/10/2018 14:43:45
Hola a tod@s
Estoy intentando implementar una función que comprima strings largos y devuelva un string más reducido. Por ejemplo si tuviera el siguiente string,:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCC
Debería devolver un string como este:
A30B20C7
Puesto que, si no he cometido algún error al contar yo, hay 30 aes, 20 bes y 7 ces.
Estoy intentando hacer esta función pero da error:
pero da error System.OverflowException
Acepto tanto correcciones de código como una función nueva.
Gracias
Estoy intentando implementar una función que comprima strings largos y devuelva un string más reducido. Por ejemplo si tuviera el siguiente string,:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCC
Debería devolver un string como este:
A30B20C7
Puesto que, si no he cometido algún error al contar yo, hay 30 aes, 20 bes y 7 ces.
Estoy intentando hacer esta función pero da error:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Function comprime(c As String) As String
Dim l As Int64 = c.Length
Dim ci As Int16 = 0 'caracteres iguales contiguos
Dim sb As New System.Text.StringBuilder, s As String
Select Case l
Case l <= 1
Return c
Exit Function
Case Else
Dim uc As Char, r As Int16
For i = 1 To c.Length
While i < c.Length
i += 1
While uc = Mid(c, i, 1)
ci += 1
End While
uc = Microsoft.VisualBasic.Mid(c, i, 1)
End While
sb.Append(uc, ci)
Next
End Select
Return sb.ToString
End Function
Acepto tanto correcciones de código como una función nueva.
Gracias
Valora esta pregunta


0