Gente, quem nunca teve problemas para compactar códigos fonte, ou quem já precisou utilizar algum programinha e descobriu que esles são um lixo?
Public Function comprime(Str as string)
'Remove Tabulacao
Str = Str.Replace(Chr(9)," ")
'Remove Line Feed
Str = Str.Replace(Chr(13)&Chr(10)," ")
'Remove Espaços em Branco Duplos
Do While (Str.IndexOF(" ") <> -1)
Str = Str.Replace(" "," ")
loop
'Tira os "> <" e coloca "><"
Str = Str.Replace("""> <""","""><""")
'Optimiza tag > </ para ></
Str = Str.Replace("> </","></")
'Optimiza tag "> < para "><
Str = Str.Replace("""> <","""><")
'Optimiza tag > <" para ><"
Str = Str.Replace("> <""","><""")
'Optimiza tag "> para ">
Str = Str.Replace("""> ",""">")
'Optimiza tag <" para <"
Str = Str.Replace(" <""","<""")
'Optimiza tag : # para :#
Str = Str.Replace(": #",":#")
return str
End Function
Abaixo, uma página em .NET para você utilizar. É o sistema já pronto que calcula até a eficiência.
<%@ Page Language="VB" smartnavigation="true" Debug="false" Trace="false" %>
<%@ Import NameSpace="System" %>
<script runat="server">
' Insert page code here
'
Sub F_BTN_RESETA_Click(sender As Object, e As EventArgs)
F_STR_COMP.text = ""
F_STR_NORMAL.text = ""
LABEL_STRING_ORIGINAL.text = "N/D"
LABEL_STRING_FINAL.text = "N/D"
LABEL_STRING_REDUCAO.text = "N/D"
End Sub
Sub F_BTN_COMPACTA_Click(sender As Object, e As EventArgs)
F_STR_COMP.text = comprime(F_STR_NORMAL.text)
Calcula_Tamanho_Eficiencia()
End Sub
Public Function comprime(Str as string)
'Remove Tabulacao
Str = Str.Replace(Chr(9)," ")
'Remove Line Feed
Str = Str.Replace(Chr(13)&Chr(10)," ")
'Remove Espaços em Branco Duplos
Do While (Str.IndexOF(" ") <> -1)
Str = Str.Replace(" "," ")
loop
'Tira os "> <" e coloca "><"
Str = Str.Replace("""> <""","""><""")
'Optimiza tag > </ para ></
Str = Str.Replace("> </","></")
'Optimiza tag "> < para "><
Str = Str.Replace("""> <","""><")
'Optimiza tag > <" para ><"
Str = Str.Replace("> <""","><""")
'Optimiza tag "> para ">
Str = Str.Replace("""> ",""">")
'Optimiza tag <" para <"
Str = Str.Replace(" <""","<""")
'Optimiza tag : # para :#
Str = Str.Replace(": #",":#")
return str
End Function
Public Function Calcula_Tamanho_Eficiencia()
Dim tamanho_original as Integer
Dim tamanho_final as Integer
Dim reducao as Integer
tamanho_original = F_STR_NORMAL.text.Length
tamanho_final = F_STR_COMP.text.length
reducao = tamanho_original-tamanho_final
LABEL_STRING_ORIGINAL.text = tamanho_original.ToString() + " bytes"
LABEL_STRING_FINAL.text = tamanho_final.ToString() + " bytes"
LABEL_STRING_REDUCAO.text = reducao.ToString() + " bytes -> " + Cstr(100-((tamanho_final/tamanho_original))*100) + "%"
End Function
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<p align="center">
<font face="Verdana">Ligeirinho - Sistema de Compressão</font>
</p>
<p align="center">
<table style="WIDTH: 539px; HEIGHT: 328px" align="center">
<tbody>
<tr>
<td valign="top">
<p align="right">
<asp:Label id="Label1" runat="server" Font-Size="8pt" Font-Names="Verdana">String Original:</asp:Label>
</p>
</td>
<td>
<asp:TextBox id="F_STR_NORMAL" runat="server" Font-Size="8pt" Font-Names="Verdana" Width="351px" Rows="7" TextMode="MultiLine"></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td>
<div align="center">
<asp:Button id="F_BTN_COMPACTA" onclick="F_BTN_COMPACTA_Click" runat="server" Text="Compactar"></asp:Button>
<asp:Button id="F_BTN_RESETA" onclick="F_BTN_RESETA_Click" runat="server" Text="Apagar Dados"></asp:Button>
</div>
</td>
</tr>
<tr>
<td valign="top">
<div align="right">
<asp:Label id="Label2" runat="server" Font-Size="8pt" Font-Names="Verdana">String Compactada:</asp:Label>
</div>
</td>
<td>
<asp:TextBox id="F_STR_COMP" runat="server" Font-Size="8pt" Font-Names="Verdana" Width="351px" Rows="7" TextMode="MultiLine"></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p align="right">
<asp:Label id="Label3" runat="server" Font-Size="8pt" Font-Names="Verdana">Tamanho da String Original:</asp:Label>
</p>
</td>
<td>
<asp:Label id="LABEL_STRING_ORIGINAL" runat="server" Font-Size="8pt" Font-Names="Verdana">N/D</asp:Label>
</td>
</tr>
<tr>
<td>
<p align="right">
<asp:Label id="Label4" runat="server" Font-Size="8pt" Font-Names="Verdana">Tamanho da String Final:</asp:Label>
</p>
</td>
<td>
<asp:Label id="LABEL_STRING_FINAL" runat="server" Font-Size="8pt" Font-Names="Verdana">N/D</asp:Label>
</td>
</tr>
<tr>
<td>
<p align="right">
<asp:Label id="Label5" runat="server" Font-Size="8pt" Font-Names="Verdana">Redução:</asp:Label>
</p>
</td>
<td>
<asp:Label id="LABEL_STRING_REDUCAO" runat="server" Font-Size="8pt" Font-Names="Verdana">N/D</asp:Label>
</td>
</tr>
</tbody>
</table>
</p>
</form>
</body>
</html>
Qualquer dúvida, não esqueçam de mandar email ou icq.
Até a próxima
Gosta de se definir como Professor Pardal, pois, cada pepino que lhe aparece... Tem que inventar umas soluções mirabolantes. Talvez vocês encontrem alguns de seus códigos neste site.". Hoje, vai saber...