Gå til innhold

C#: Fjerne blanks i starten av hver linje


Anbefalte innlegg

Jeg har en richtextbox med innhold som ser slik ut:

asdasdasdasd
asdasdasd
     asdasdasd
           asdas awdaw
asd awdawd
  asda wadwd
asd aweda
asdsadasdasdasd aasda

Linjene har et tilfeldig antall blanke foran seg og noen har blanke inni seg. Jeg ønsker å fjerne alle blanke i starten av en linje.. Noen løsningsforslag?

Lenke til kommentar
Videoannonse
Annonse
            System.Diagnostics.Process p = new System.Diagnostics.Process();
           p.StartInfo.FileName = @"CMD.exe";
           p.StartInfo.RedirectStandardOutput = true;
           p.StartInfo.RedirectStandardInput = true;
           p.StartInfo.UseShellExecute = false;
           p.StartInfo.WorkingDirectory = "c:\\";
           p.Start();
           p.StandardInput.WriteLine("@echo off");
           p.StandardInput.WriteLine("dir");
           p.StandardInput.WriteLine("exit");
           string result = p.StandardOutput.ReadToEnd();

De aktuelle "writelinene" skal ikke brukes, men bare tester med dem.. Når jeg gjør det på denne måten får jeg alt for mye output:

 

Microsoft Windows XP [Versjon 5.1.2600]
© Copyright 1985-2001 Microsoft Corporation

c:\>@echo off
dir
Volumet i stasjon C er uten navn.
Volumserienummeret er 1234-1234

Innhold i c:\

01.07.2009  10:45             1ÿ024 .123
23.01.2009  12:18    <DIR>          123
29.10.2008  17:29                 0 AUTOEXEC.BAT
24.06.2009  17:08    <DIR>          c8c005fb3d94de8b25
29.10.2008  17:29                 0 CONFIG.SYS
29.10.2008  17:36    <DIR>          Documents and Settings
15.07.2009  13:37    <DIR>          Download
01.07.2009  11:53    <DIR>          123
29.10.2008  17:40    <DIR>          Intel
04.03.2009  11:29    <DIR>          Ny mappe
14.11.2008  12:13    <DIR>          123
14.07.2009  14:53    <DIR>          Programfiler
29.10.2008  17:43    <DIR>          SWSETUP
05.02.2009  10:17    <DIR>          123
15.07.2009  03:01    <DIR>          WINDOWS
              3 fil(er)            1ÿ024 byte
             12 mappe®  31ÿ509ÿ807ÿ104 byte ledig
exit

 

Hvordan skreller jeg bort alt annet enn dir-listen?

Endret av Knast
Lenke til kommentar
Hvorfor bruker du CMD?

 

System.IO.Directory.GetFiles() og eventuelt System.IO.FileInfo() skaffer deg en slik liste på en mye enklere måte.

Jeg sa at det var for eksempelets skyld.. Jeg skal bruke cmd til å sende filer til en MVS-server. Til det bruker jeg et program "send" som ligger i system32-mappa og er tilrettelagt for cmd, men det er godt mulig at man kan sende det på andre måter.. Isåfall tar jeg gjerne imot forslag :)

Lenke til kommentar
Vel, det skal fungere. Sikker på at den linjen er helt tom? Er det et mellomrom på den vil det ikke funke.

richTextBox1.Text.Replace("\n\n", "\n");

 

og jeg har fortsatt linjer som ser slik ut:

 

blablabla

 

blablabla..

 

gjør jeg noe feil? hva gjør \r?

Endret av Knast
Lenke til kommentar
Du kan sende filer over HTTP og FTP med System.Net.WebClient, over lokalnettet kan du bruke System.IO.File.Copy.

Har kommet til dette punktet nå. Jeg skal sende en fil med ftp til et dataset på en unix-server. FTP-syntaksene har jeg klart å google meg til, men jeg skjønner ikke hvordan jeg skal klare å bruke create på noe som ikke ligger i en vanlig mappe men i FTP-rot/KATALOGER.SPESIFIKTDATASETNAVN. Datasettet har ingen filtype - målet er å kopiere ascii-innholdet på kildefilen inn til et katalogisert dataset. Jeg får dette til manuelt ved å gå inn i cmd. skrive:

 

"ftp serveradresse"

<innloggingsinformasjon>

"cd .."

"put lokaldisk:/kildefil.txt målkatalog.målsett".

 

Hvordan kan jeg løse dette med FTP? Prøvde som en vanlig FTP-overføring med linjene beskrevet her, uten hell (fikk error 501).

 

edit:

 

Jeg tror kanskje problemet ligger i å kommunisere med en unix-basert stormaskin.. Om C# kunne emulere linjene jeg beskrev over steg for steg hadde dette kunne løst problemet.

 

og: FTP (av MS)

Endret av Knast
Lenke til kommentar

Sånn sirkus rett fra minnet mitt:

var client = new WebClient("ftp://ftp.etsted.com", brukernavn, passord);
client.DownloadFile("minfil.ikke.noe.extension", "C:\Heipådu.txt");

Merk dog at for hver Dowanload/Upload instruksjon du gir til WebClient, vil den starte en ny ftp session, laste ned/opp og lukkes.

Derfor er det blitt skrevet andre FTP klasser for .NET som forholder seg åpne. Dette på grunn av at FTP er en high latency protokoll som jeg ikke fatter hvorfor fortsatt er i såpass utbredt bruk.

Lenke til kommentar
Sånn sirkus rett fra minnet mitt:

var client = new WebClient("ftp://ftp.etsted.com", brukernavn, passord);
client.DownloadFile("minfil.ikke.noe.extension", "C:\Heipådu.txt");

Merk dog at for hver Dowanload/Upload instruksjon du gir til WebClient, vil den starte en ny ftp session, laste ned/opp og lukkes.

Derfor er det blitt skrevet andre FTP klasser for .NET som forholder seg åpne. Dette på grunn av at FTP er en high latency protokoll som jeg ikke fatter hvorfor fortsatt er i såpass utbredt bruk.

Okay, jeg skal prøve det! Ellers så har jeg tenkt ut en provisorisk løsning med å bruke process ftp.exe med argumentet "-s:scriptfil.txt" som jeg setter opp tidligere i programmet. Veldig lite elegant - løsingen min, men bør virke..

Lenke til kommentar
Du kan også sende script til ftp.exe med GetInputStream på Process klassen som gjør at du slipper å lage midlertidige filer (som jeg synes er en veldig grisete fremgangsmåte)
Se der ja! Flotte greier, da lærte jeg enda noe nytt! :D

 

Enda et spørsmål: programmet mitt må søke gjennom hele ascii-filer på jakt etter en frase på 3 tegn som befinner seg i starten av linja. Jeg benytter meg av streamreader og en while-løkke som sjekker hver enkelt linje for substring(0,3) == minStreng. Med en tekstfil på noen tusen linjer er dette noe treigt. Finnes det en raskere måte å gjøre sånt på?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...