Anzeige

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


#1
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:

sheel

I love Asm
#2
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
 
Anzeige

Neue Beiträge

Anzeige