Hur tar man bort alla mellansalg i en fil? Prova... Ut tryckte mig kanke lite dumt.Det jag tänkte hur man gör det med hjälp av FileStrem och StreamWrite & StremRead. Läs in en byte. > Läs in en byte. Orkade inte skriva så mkt ;) Snabbt (och fel, helt otestat?) Tyvärr så funka inte din kod.Får Mellanslag i alla fall. En byte och ett tecken är inte alls samma sak. Ifall du tar bort alla byte som är 32 så kan du ta bort delar av andra tecken.tar bort alla mellansalg i en fil
Jag har en fill som skapas dynamiskt men det kommer med lite får många mellanslag så nu vill jag ta bort allla. HUr gör man detta på bästa sätt?Sv: tar bort alla mellansalg i en fil
string sOldstring = "Hej på dig";
string sNewstring = sOldstring .Replace(" ", "");
sNewstring bör nu innehålla "Hejpådig".Sv: tar bort alla mellansalg i en fil
Och hur man med hjälp av dessa kan ta bort alla mellanslag.Sv:tar bort alla mellansalg i en fil
Om det inte är byte 32: skriv en byte.
Loopa.Sv: tar bort alla mellansalg i en fil
> Om det inte är byte 32: skriv en byte.
> Loopa.
Chaise, det låter segt ;)
Låter som att det skulle vara roligare med:
Läs in några kilobyte till en buffer
Loopa igenom buffern och kolla efter mellanslag, kopiera till en annan buffer
Skriv ifrån andra buffern till nya filen
LoopaSv:tar bort alla mellansalg i en fil
Och det sker väl en viss intern buffring i stream objekten så det är inte så illa som det verkar.Sv:tar bort alla mellansalg i en fil
<code>
//fsin = filestream, inläsning
//fsout = filestream, ut
byte[] bin = new byte[8192]; //8 kbyte in
byte[] bout = new byte[8192]; //8 kbyte ut
int i; //Antal lästa bytes
while(true)
{
i = fsin.Read(bin, 0, 8192);
if(i==0)
{
if(fsin.Position>=fsin.Length)
break;
}
else
{
int j=0; //Startindex för bytein
int l=0; //Startindex för byteout
for(int k=0; k < i; k++)
{
byte bc;
bc = bin[k];
if(bc==0x20)
{
int m; //antal bytes
m = k - j + 1;
Array.Copy(bin, j, bout, l, m);
j+=m+1;
l+=m;
} //if
} //for
if(j<k)
{
m = k - j + 1;
Array.Copy(bin, j, bout, l, m);
l+=m;
}
fsout.Write(bout, 0, l);
} //else
}
</code>
OBS! Helt otestad alltså, finns säkert finnas buggar i den... Hör av dig om det inte fungerarSv: tar bort alla mellansalg i en fil
Sv: tar bort alla mellansalg i en fil
Läs in filen i en sträng, gör ersättningen, och skriv strängen till filen.
Ifall filen är stor, så att du vill använda en buffert, så får du öppna filen som en textfil, inte som en binärfil, och läsa tecken för tecken, inte byte för byte.