Avatar billede apoltix Nybegynder
29. december 2006 - 22:46 Der er 7 kommentarer og
1 løsning

Filstreng opdeling for hver enkelt karakter

En programmør bør selv programmere det, han har brug for. Men nu gider jeg ikke rigtig, specielt da jeg ikke ved hvordan jeg skal gøre det.

Jeg har en tekstfil, der bliver indlæst, og der læses så i en while hvert enkelt linje. Men nu skal jeg have hvert enkelt bogstav/karakter sat ind i et array - som nyt element vel at mærke. Men der må kun være to typer karakterer, mellemrum eller et # (nummertegn). Så hvis det er mellemrum skal elementets værdi være 0 (datatype: byte) mens det skal være 128 (igen datatype: byte) hvis det er et #.

Hvordan gør man det? Uddybning/detaljering af de enkelte funktioner, etc. brugt i koden er velkomne.
Avatar billede thesurfer Nybegynder
29. december 2006 - 23:26 #1
Ang "En programmør bør selv programmere det, han har brug for.":
Sludder og vrøvl! :-)
Brug det der er der.. der er nemlig ingen grund til at opfinde hjulet eller den dybe tallerken igen..

Et eksempel på "læs hvert eneste tegn":

string tekst = "dette er en tekst";
string tegn = "";
for(int i = 0, len = tekst.length; i < len; i++)
{
tegn = tekst.substring(i, 1);
  if (tegn == " ")
  {
    // tegnet er mellemrum
  }
}

Jeg forstod ikke helt det der med "mellemrum eller et # (nummertegn)", så jeg håber at du enten kan se hvordan du gør det nu, eller forklarer det yderliger..

Jeg kan dog først svare igen engang i morgen..
Avatar billede thesurfer Nybegynder
29. december 2006 - 23:26 #2
PS: Det kan godt være det skal være Substring (med stort "S")..
Avatar billede apoltix Nybegynder
30. december 2006 - 00:35 #3
Perfekt! Kender egentlig godt funktionen fra PHP, men havde lige overset den her. Læg svar, så er der point til dig. Tak igen.
Avatar billede arne_v Ekspert
30. december 2006 - 01:20 #4
tegn = tekst.substring(i, 1);

kan også laves som

tegn = tekst[i];
Avatar billede thesurfer Nybegynder
30. december 2006 - 02:37 #5
Svar.
Avatar billede md_craig Nybegynder
30. december 2006 - 13:45 #6
Hvis du er sikker på at tekststrengen kun indeholder de to chars kan du lave en lidt mere simpel...

byte[] bytes = new byte[tekst.Lenght]; int i = 0;
foreach( char c in tekst )
{
  bytes[i++] = (c == '#') ? 128 : 0;
}

ellers må man jo igen...

byte[] bytes = new byte[tekst.Lenght]; int i = 0;
foreach( char c in tekst )
{
  if ( c == '#' ) bytes[i] = 128;
  else if ( c == ' ' ) bytes[i] = 0;
  else throw new Exception( "Teksten indeholder andre tegn end mellemrum og '#'" );
}
Avatar billede md_craig Nybegynder
30. december 2006 - 13:46 #7
mangler lige at incremente i i den sidste o_O

byte[] bytes = new byte[tekst.Lenght]; int i = 0;
foreach( char c in tekst )
{
  if ( c == '#' ) bytes[i] = 128;
  else if ( c == ' ' ) bytes[i] = 0;
  else throw new Exception( "Teksten indeholder andre tegn end mellemrum og '#'" );
  i++;
}
Avatar billede apoltix Nybegynder
30. december 2006 - 14:21 #8
Tak, men jeg har allerede tilpasset koden, som den skal være. Godt nytår...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester