[C#] String Manipulatie Probleem (Trimmen)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • DiviNe187
  • Registratie: Maart 2006
  • Laatst online: 29-08 17:37
Hoi!

Ik heb een vraagje, ik ben momenteel met een klein project bezig om bepaalde processen te starten met argumenten erbij. Waar het allemaal om draait is dus dit: ik wil via Startinfo CMD.exe opgeven een bepaalde argument door te geven, dit gaat dan ook tot nu toe gewoon prima maar ik stuit wel wat op problemen. Ik werk met een textbox waarin een IP+Port moet worden gekopieerd in de exacte tekenreeks "127.0.0.1:99999" en dit word doorgevoerd naar een string. Het probleem echter begint hier.. Ik wil via een andere knop met dezelfde string en dus ook dezelfde textbox een andere process aanvoeren (CMD dus in dit geval) en ik gebruik hiervoor de argument cmd /k ping IP.
Het probleem alleen is dat CMD die value niet accepteert. CMD scant niet omdat de gehele string word doorgevoerd en het niet scant op een ip+poort in de desbetreffende syntax.

Wat ik hier tegen probeer te doen is dus dit :

code:
1
2
char[] MyChar = { ':', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
string TrimIP = IP.TrimEnd(MyChar);


En dit is dus wat niet geheel naar toebehoren werkt (of in ieder geval zoals ik het bedoeld had)
De uitkomst van TrimIP is altijd "127.0.0." (met het puntje op het einde erbij)
Hij trimt dus wel de string, maar doet het net iets te ver.. ik mis de 3 laatste ip cijfers en dat is wat ik uiteraard wil voorkomen. Hij zou eigenlijk dus moeten stoppen bij " : " en niet verder dan dat. Ik heb het ook zonder de 0 -9 reeks geprobeerd maar de uitkomst hiervan is dat ik dan gewoon "127.0.0.1:99999" als output krijg en de " : " genegeerd word.

Is er iemand die mij misshien wat verder op weg kan helpen?

Bij voorbaat dank!

Kevin

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 09:35

Patriot

Fulltime #whatpulsert

Wat dachten we van Split()?

C#:
1
string[] split = IP.Split(':');


In split[0] zit het IP en in split[1] de poort.

Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 25-09 22:31

CoolGamer

What is it? Dragons?

Je zou gebruik kunnen maken van de indexOf en de substring methodes van String om een deel van de string eruit te halen.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • DiviNe187
  • Registratie: Maart 2006
  • Laatst online: 29-08 17:37
Patriot schreef op woensdag 17 december 2008 @ 00:31:
Wat dachten we van Split()?

C#:
1
string[] split = IP.Split(':');


In split\[0] zit het IP en in split\[1] de poort.
Dat is inderdaad precies wat ik zocht :o 8)7

Vele malen dank! _/-\o_ _/-\o_

P.s. Gamer.. Ik ga je info zeker even bekijken! Heel erg bedankt voor de reactie.

Acties:
  • 0 Henk 'm!

  • DiviNe187
  • Registratie: Maart 2006
  • Laatst online: 29-08 17:37
Patriot, ik heb overigens nog wel even een vraagje!

Wat is de reden eigenlijk dat de trim niet werkt want ik begrijp dus niet waarom die em al afhaakt voor de " : " als ik de cijfers ook meegeef om te trimmen.

Is het niet de bedoeling geweest dat hij eigenlijk met alleen " : " al zou moeten werken ? Want ik vraag toch wel degelijk voor de trim tot de " : " en niet verder. Dus ik snap niet waarom alles dan genegeerd word als ik alleen simpelweg de " : " aangeef.

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 09:35

Patriot

Fulltime #whatpulsert

TrimEnd haalt de characters die je aangeeft in de eerste parameter van de string af, aan het einde. Jij geeft alle charachters die in de string staan aan, op de punt na. Zodra hij dus (beginnende bij het einde van de string en dan teruglopend) bij de punt aan is gekomen stopt hij. Hij begint gewoon bij het laatste teken in je string, en kijkt of die tussen de tekens zit die jij weg wil hebben. Als dat zo is dan haalt hij hem weg en bekijkt hij de volgende, als het niet zo is laat hij hem staan en is hij klaar.

Acties:
  • 0 Henk 'm!

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
omdat de trim functie alle opgegeven chars aan het eind van je string weghaalt. daar vallen de cijfers dus ook onder!
edit:

Patriot was me voor :)


ik zou voor de oplossing van patriot gaan.
het gebruik van indexOf en substr vereist wat meer code om tot hetzelfde resultaat te komen.

[ Voor 10% gewijzigd door steffex op 17-12-2008 01:00 ]


Acties:
  • 0 Henk 'm!

  • DiviNe187
  • Registratie: Maart 2006
  • Laatst online: 29-08 17:37
Patriot schreef op woensdag 17 december 2008 @ 00:58:
TrimEnd haalt de characters die je aangeeft in de eerste parameter van de string af, aan het einde. Jij geeft alle charachters die in de string staan aan, op de punt na. Zodra hij dus (beginnende bij het einde van de string en dan teruglopend) bij de punt aan is gekomen stopt hij. Hij begint gewoon bij het laatste teken in je string, en kijkt of die tussen de tekens zit die jij weg wil hebben. Als dat zo is dan haalt hij hem weg en bekijkt hij de volgende, als het niet zo is laat hij hem staan en is hij klaar.
Oke dan zat ik in mijn hoofd er dus niet ver vanaf! Ik had al zo een vermoeden dat het een iets te letterlijk genomen syntax is. Ik heb em dan alleen even misvat. Bedankt! weer wat geleerd! 8) O-)

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
stef-o schreef op woensdag 17 december 2008 @ 00:59:
ik zou voor de oplossing van patriot gaan.
het gebruik van indexOf en substr vereist wat meer code om tot hetzelfde resultaat te komen.
Ik zou hier toch liever
C#:
1
string IP = IPandPort.Remove(IPandPort.LastIndexOf(':'));
gebruiken, vanwege IPv6. :p En eventueel checken met IPAddress.TryParse() of het echt een IP-adres is.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten

Pagina: 1