Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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?

  • Antworten 54
  • Ansichten 6.8k
  • Erstellt
  • Letzte Antwort

Top-Poster in diesem Thema

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....

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

ansonsten hasst du für mich eine lösung um ein konsolenprogramm zu starten das als parameter einen pfad mit möglichem c:\dokumente~ hat? ohne hochkommas im string? :D

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

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...

ja hab ich probiert, prozess konnte datei nicht finden

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

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...

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

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.

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 " :/

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

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

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

selbes ergebnis ...

string test = (Char)34 + textBox2.Text + (Char)34;

-->

\"C:\\Dokumente und Einstellungen\\User\\Desktop\\output.csv\"

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 :/


string sInputPfad = (Char)34 + textBox1.Text + (Char)34;

string sOutputPfad = (Char)34 + textBox2.Text + (Char)34;


string sArgument = sInputPfad + " " + sOutputPfad;

natürlich

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.