Avatar billede havmaage Juniormester
11. april 2014 - 13:48 Der er 5 kommentarer og
1 løsning

udskifte backslash i en string

Hej !

hvordan udskifter man "\" i en string.

jeg har følgende
c:\\\indlaes\\\2013\\\2014011311008_20140213112551.xml

jeg vil gerne have fjernet et "\" for hvert sted der er 3 lige efter hinanden.

jeg har forsøgt med

path = @"c:\\\indlaes\\\2013\\\2014011311008_20140213112551.xml";
path.replace("\\\"","\\");

#####
kunne også loope igennem noget lignende dette her,
men har problemer med at chekke om selve char "\"

int pos = 0,countescape = 0;
            foreach (char s in path)
            {

                Console.WriteLine(s + "\n");
                pos++;
                if (s.Equals("\"))
                {
                    countescape++;
                    if (countescape == 3)
                    {
// fjern en backslash
                       
Console.WriteLine("Fjern char " + s + " på posisiton" + pos);
                        Console.ReadLine();
                    }

                }
           

hvordan for jeg nemmest
            c:\\\indlaes\\\2013\\\2014011311008_20140213112551.xml
til at blive
c:\\indlaes\\2013\\2014011311008_20140213112551.xml

Så det er gyldigt filepath.
Avatar billede arne_v Ekspert
11. april 2014 - 13:53 #1
path = @"c:\\\indlaes\\\2013\\\2014011311008_20140213112551.xml";
path.replace(@"\\\",@"\\");

vil erstatte 3 \ med 2 \
Avatar billede arne_v Ekspert
11. april 2014 - 13:54 #2
sludder

path = @"c:\\\indlaes\\\2013\\\2014011311008_20140213112551.xml";
path = path.replace(@"\\\",@"\\");
Avatar billede kalp Novice
11. april 2014 - 13:55 #3
string path = @"c:\\\indlaes\\\2013\\\2014011311008_20140213112551.xml";
            path = path.Replace(@"\\\", "\\");
            Console.WriteLine(path);
            Console.Read();
Avatar billede sgaardbo Nybegynder
11. april 2014 - 14:01 #4
Eller måske:
String path = @"c:\\\indlaes\\\2013\\\2014011311008_20140213112551.xml";

String correctedPath = Path.Combine(
  path.Split(new char[] { '\\' }, 
  StringSplitOptions.RemoveEmptyEntries)
);
Avatar billede havmaage Juniormester
11. april 2014 - 14:10 #5
AHA ok google lige @ foran strings i c #
Tak for hjælpen det virker sådan:

A string literal such as @"c:\Foo" is called a verbatim string literal. It basically means, "don't apply any interpretations to characters until the next quote character is reached". So, a verbatim string literal can contain backslashes (without them being doubled-up) and even line separators

Tak for hjælpen til alle 

Arne for point han var der først og det var hans post der fik mig på sporet af en lille tidsrøvende udfordring.
Avatar billede arne_v Ekspert
11. april 2014 - 14:20 #6
Den anden pointe er at String Replace ikke modificerer strengen men returnerer en ny.

Og svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester