if (txt.Substring(i, 1) == "\" nicht möglich

Käsekuchen

Grünschnabel
Hallo Community,

bin grad mal wieder am Beispiele abarbeiten und habe bei einem Beispiel ein Problem. Der User soll einen Windows-Pfadnamen eingeben. Als Beispiel:

C:\\schule\POS1\Übung1.docx

Und ausgegeben werden soll:

C:
\\schule\POS1\
Übung1
docx

Dazu soll man folgende Variablen verwenden: Pfadname, Laufwerk, Verzeichnispfad, Dateiname, Extension

Ich möchte dafür die simple Zählschleife für die Variable Laufwerk anwenden, welche so lange durchgeführt wird, bis das Zeichen "\" vorkommt. Das kann ich aber nicht schreiben, weil dann folgende Fehlermeldungen kommen:

Zeilenvorschub in Konstante.
) erwartet.
Zeilenvorschub in Konstante.
) erwartet.

Code
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _69
{
    class Program
    {
        static void Main(string[] args)
        {
            string Pfadname, Laufwerk = "", Verzeichnispfad, Dateiname, Extension;
            Console.WriteLine("Bitte geben Sie einen Windows-Pfadnamen ein:");
            Pfadname = Console.ReadLine();

            for (int i = 0; i <= Pfadname.Length - 1; i += 1)
            {
                while (Pfadname.Substring(i, 1) != "\")
                {
                    Laufwerk = Laufwerk + Pfadname.Substring(i, 1);
                }

                if (Pfadname.Substring(i, 1) == "\")
                {
                    break;
                }
            }

            Console.WriteLine();
            Console.WriteLine(Laufwerk);
            Console.ReadKey();
        }
    }
}

Mit einem normalen Slash (/) ist das kein Problem. Ich glaube für CSharp hat \ irgendeine Bedeutung, vielleicht weil \\ = Kommentar?

MfG
 
Zuletzt bearbeitet:
Hi

ein Kommentar ist //, nicht \\
Aber ja, es hat eine besondere Bedeutung, und zwar für Kombinationen wie \n (Zeilenwechsel) usw.

Für ein "echtes" \ muss man im Code zwei anschreiben, also "\\"

Bei "\"" (insgesamt drei " hier) wäre das " am Anfang und das am Schluss die Stringgrenze, wie üblich, und das \" in der Mitte steht für ein " im Text. Also mit \ damit es nicht mit den Stringgrenzen verwechselt wird. Bei dir wird das " von Anfang gefunden, dann ein \", und dann...? Das Ende vom String fehlt, deswegen der Fehler.

Eine Liste von solchen Kombinationen hier: https://de.wikipedia.org/wiki/Escape-Sequenz
 
Zurück