Zum Inhalt springen

string mit doppeltem hochkomma (") richtig escapen - aber wie?!


Empfohlene Beiträge

  • Antworten 54
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Geschrieben
pseudo bsp.:

str test = "\"" + textBox1.Text + "\"";

value beim debugen:

\"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\input.xlsx\"

wie bekomme ich nun ein normales doppeltes hochkomma in den string oO?

brauchst du wirklich " im Pfad? hmm die anweisung stimmt. Klick auf die kleine Lupe beim debuggn, dann siehst du das da des drin steht was du wolltest.

Es ist halt ein problem was oft bei LINQ vorkommt, deferred execution....

Geschrieben

ja, benötige die ", öffne hier per filedialog ein pfad, und rufe dann ein konsolenprogramm mit verschiedenen parametern auf, einer davon ist das file mit den input daten, wenn ich einfach den pfad mit aufrufe bekomme ich die fehlermeldung c:\dokumente ~...

diesen string mit " zu versehen kann doch nicht so schwer sein ^^ :old

Geschrieben (bearbeitet)

habe eine form mit der ich einen prozess (eine .exe datei) starte (System.Diagnostics.Process prozess = new System.Diagnostics.Process(); - prozess.start();).

diese .exe ist ein konsolenprogramm mit verschiedenen parametern,

zwei dieser parameter sind pfade, einmal welches file ausgelesen einmal wohin das bearbeitete file gespeichert wird. die pfade trage ich per file.dialog in eine textbox ein und füge per prozess.startinfo.arguments den textbox inhalt als argument hinzu. ist der pfad nun zb.: "c:\Dokumente ~" sprich mit leerzeichen bekomme ich einen fehler, sollte einfach den pfad in doppelte hochkommas packen +grml+

bei dem in hochkommas packen bin ich wie oben schon gesehen kläglich gescheitert ^^

Bearbeitet von diditwithook
Geschrieben
pseudo bsp.:

str test = "\"" + textBox1.Text + "\"";

value beim debugen:

\"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\input.xlsx\"

wie bekomme ich nun ein normales doppeltes hochkomma in den string oO?

Hast du es denn überhaupt mal ausprobiert? Denn der Code ist richtig so.

Das du das im Debugger auh mit \ Escaped siehst liegt daran das die Quickinfo den String auch mit " am Anfang und Ende darstellt. Wenn du aber auf die Lupe klickst siehst du den "richtigen" Wert ohne das etwas Escaped wird. Ist zumindest im Visual Studio so...

Geschrieben
Das du das im Debugger auh mit \ Escaped siehst liegt daran das die Quickinfo den String auch mit " am Anfang und Ende darstellt.

ich habe den wert als ich ihn hierher kopiert habe schon um " am anfang und ende bereinigt!

suche ich mir einen pfad ohne leerzeichen aus funktioniert es

Geschrieben
Hast du es denn überhaupt mal ausprobiert? Denn der Code ist richtig so.

Das du das im Debugger auh mit \ Escaped siehst liegt daran das die Quickinfo den String auch mit " am Anfang und Ende darstellt. Wenn du aber auf die Lupe klickst siehst du den "richtigen" Wert ohne das etwas Escaped wird. Ist zumindest im Visual Studio so...

das sagte ich ihm auch schon normal sollte es kein problem darstellen ob da nun leerzeichen drin sind oder nicht...ich hatte mal so ein problem aber ka woran es lag zu lang her...

Geschrieben
Doch die Leerzeichen sind ein Problem wenn du es als Parameter übergeben willst weil dann ab jedem Leerzeichen ein neuer Parameter beginnt. Deswegen ja die Anführungszeichen am Anfang und Ende des Strings.

das ich das extra dazu schreiben muss das ich den text in den "" meine wusst ich ja ned dachte es is selbst verständlich weils sonst eh ein fu fehler gebn würd weils kein string parameter wär ohne "" .... VS würd ja den fehler schon melden und das is basic wissn o.O

Geschrieben

Nein du verstehst das Problem nicht.

Wenn du zum Beispiel auf der Kommandozeile ein Programm namens test.exe aufrufen willst welches einen Pfad als Parameter erwartet zum Beispiel c:\neuer ordner\ dann kannst du das nicht einfach so eingeben:

test.exe c:\neuer ordner\

Weil du dann 2 Parameter übergeben hättest nämlich c:\neuer und ordner.

Damit das ein Parameter ist müssen da Anführungszeichen drum

test.exe "c:\neuer ordner\"

Genau das Selbe will diditwithook in seinem Programm machen und wie bereits gesagt macht er das so wie oben gepostet richtig. Also hat er noch irgendwo ein anderes Problem.

Geschrieben
Nein du verstehst das Problem nicht.

Wenn du zum Beispiel auf der Kommandozeile ein Programm namens test.exe aufrufen willst welches einen Pfad als Parameter erwartet zum Beispiel c:\neuer ordner\ dann kannst du das nicht einfach so eingeben:

Weil du dann 2 Parameter übergeben hättest nämlich c:\neuer und ordner.

Damit das ein Parameter ist müssen da Anführungszeichen drum

Genau das Selbe will diditwithook in seinem Programm machen und wie bereits gesagt macht er das so wie oben gepostet richtig. Also hat er noch irgendwo ein anderes Problem.

du hast mein problem zu 100% erkannt :uli

wenn ich einen pfad ohne leerzeichen mit übergebe habe ich dieses problem nicht, wenn ich bei properties -> debug den pfad mit " " als command line argument eintrage funktioniert es auch problemlos, will ich jedoch eben den pfad per filedialog auswählen kriege ich ihn ohne " :/

Geschrieben
pseudo bsp.:

str test = "\"" + textBox1.Text + "\"";
value beim debugen: \"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\input.xlsx\" wie bekomme ich nun ein normales doppeltes hochkomma in den string oO?

string str = "\\" + Strings.Chr(34) + TextBox1.Text + "\\" + Strings.Chr(34);

lg

Gateway

Geschrieben (bearbeitet)

ca so...


string sInputPfad = "\\" + char.ConvertFromUtf32(34) + textBox1.Text + "\\" + char.ConvertFromUtf32(34);

...? ergebnis: \\\"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\office2007serial.txt\\\" hatte ich schon versucht natürlich auch in der form:

string sInputPfad =char.ConvertFromUtf32(34) + textBox1.Text + char.ConvertFromUtf32(34);

ergebnis:

\"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\office2007serial.txt\"

selbe wie beim ersten codeschnipsel

Bearbeitet von diditwithook
Geschrieben
ca so...


string sInputPfad = "\\" + char.ConvertFromUtf32(34) + textBox1.Text + "\\" + char.ConvertFromUtf32(34);

...? ergebnis: \\\"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\office2007serial.txt\\\" hatte ich schon versucht natürlich auch in der form:

string sInputPfad =char.ConvertFromUtf32(34) + textBox1.Text + char.ConvertFromUtf32(34);

ergebnis: \"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\office2007serial.txt\" selbe wie beim ersten codeschnipsel
So ist es ja auch falsch. Der Wert 34 ist nur in der Ascii Codierung das doppelte Hochkomma. Du greifst aber gerade auf die UTF32 Codierung zu. Siehe auch hier. Das dürfte wohl eher das sein was du willst:

string str = "Siehe da, das ist dein Zeichen" + (Char)34 + "!"

lg

Gateway

Geschrieben

System.Diagnostics.Process prozess = new

System.Diagnostics.Process();

prozess.StartInfo.FileName = "programm.exe";

string sArgument = sInputPfad + " " + sOutputPfad;

prozess.StartInfo.Arguments = sArgument;

prozess.Start();

ohne exception handler etc stürzt das "programm.exe" ab, da dieses min. 2 argumente erwartet...

bearbeite ich die inhalte der textboxen nicht und der pfad hat kein leerzeichen funktioniert es :/

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...