• Forum
      /  
    Programmering og webdesign
      /  
    Programmering
  • 19-12-2012 · 18:04 1512 visninger 26 svar
  • Denne tråd er over 6 måneder gammel

    Er du sikker på, at du har noget relevant at tilføje?

  • C# Ignorer karakteren '\' i en string?

    Af Kreslem Semi Supporter
Hey Hol.

Prøver på at indsætte en tekst i en konsol applikation, navnlig ordet "RPG", genereret mha. http://www.network-science.de/ascii/ med fonten graffiti.

Jeg bruger så en masse Console.WriteLine("."); til dette formål.
Men da denne karakter indgår: \
kommer den med fejlen "Unrecognized escape sequence" og det er vel fordi den forventer, at jeg måske laver et linjeskift i form af \n eller \n\r.

Det jeg egentlig bare vil have programmet til er at udskrive '\' som ren tekst.

Så til jer kyndige programmører, kan dette løses på nogen måde?

Tak på forhånd.

Giga Nørd
19-12-2012 18:18
#0

Brug Console.writeline("Hej med \ dig");'

/mvh
Semi Supporter
19-12-2012 18:38
#1 Tak! That did the trick.
Maxi Supporter
20-12-2012 14:59
Oftet bruger man @ i stedet..

Eksempel:
Console.writeline(@"Hej med \ dig");
Supporter Aspirant
20-12-2012 16:20
#3 Men så fjerner du alle escapes
Maxi Supporter
20-12-2012 21:51
Nej det gør du ikke..

Om du skriver \ eller @ har samme effekt

http://stackoverflow.com/questions/...
Semi Supporter
20-12-2012 21:58
Jo, du fjerner alle escape-chars for den streng, altså vil \n heller ikke virke i den streng.
Maxi Supporter
20-12-2012 22:02
@ gør at du ikke behøver at skrive \, end of story. Så du kan skrive f.eks @"C:\Windows\Temp" i steddet for "C:\Windows\Temp".

Så det fjerner ikke alle forekomster, nej..
Maxi Supporter
20-12-2012 22:07
Console.WriteLine("C:\Windows\Temp" + "\n" + "test");
Console.WriteLine(@"C:\Window-
s\Temp" + "\n" + "test");

Disse to eksempler producere nøjagtig det samme output.
Giga Nørd
21-12-2012 08:01
8#

Det er ikke korrekt!

@ fjerner ALLE forekomster som 6# også gør opmærksom på.

http://peecee.dk/upload/view/395230

Ergo ville det heller ikke fungere med en newline som 0# forsøger at lave i 0#

But WHO cares - 0# har fået sit svar - og jah...hvis jeg skulle smide et path ville jeg nok også bruge @.

/mvh
csbc

#10

Monster Supporter
21-12-2012 08:16
Verbatim strings aka '@' fjerner muligheden for escape characters.

Oftest benytter man '@' i forbindelse med en path..
HOL Moderator
21-12-2012 08:20
#8
Ja, men du har heller ikke @ på den streng der indeholder din newline !
WWT

#12

Monsterbruger
21-12-2012 08:21
Newline der bruger du også Environment til newline hvis det endeligt er.
Der er mange måder at løse samme problem på, men de er som regel også til forskellige henseender - så begge løsninger virker, men kommer an på hvad du skal bruge det til hvad der er bedst.
Path ville jeg også altid bruge @ foran fordi jeg ikke kramper lige så meget op i hænderne af alle de \, og så er kopiering til stien til stifinder også meget nemmere med Windows-tast + r.
Maxi Supporter
21-12-2012 10:08
#11

Du er vel ikke blind?
Console.WriteLine(@"C:\Windows\Temp" + "\n" + "test");
Maxi Supporter
21-12-2012 10:13
#9
Du bruger det jo også forkert.............

Det eksempel du giver, gør præcis som det skal. De gange du skriver én \, skriver den også karakteren én gang i dit output. De gange du skriver to \, skriver den begge dele og den fjerne _IKKE_ din \ foran n hvor der står \n

Du kan sagtens kombinere @ og \n eller Environment.NewLine..

Tror nok jeg ved hvad jeg snakker om!
bzRo

#15

Gæst
21-12-2012 10:24
#13 - nej #11 er ikke blind. Der forfindes 3 strenge i #8's linie kode.
Giga Nørd
21-12-2012 10:36
14#

Ikke i den samme streng....

/mvh
Maxi Supporter
21-12-2012 10:40
Ja? det er da klart, ellers kan den ikke tolke det korrekt.. Hvis du vil lave newlines er du nød til at splitte strengen op..
Maxi Supporter
21-12-2012 10:41
Man at påstår at @ fjerner ALLE \ er sgu ikke korrekt..
Giga Nørd
21-12-2012 10:42
17#

Ikke til det som 0# skal have lavet.

Der ville:

Console.writeline("bla bla \ bla bla ");

Være helt korrekt.

/mvh
Giga Nørd
21-12-2012 10:43
18#

I SAMME STRENG.....jow...

Der var ikke nogen som snakkede om at lave flere strenge, udover dig.

/mvh
Maxi Supporter
21-12-2012 10:59
Come on, det fjerner jo ikke alle... vel!?

Det muligør at du kan skrive én \ i stedet for to.. så fjerner det jo ikke alle, VEL!?

Så ville der stå C:WindowsTemp

My god!
bzRo

#22

Gæst
21-12-2012 11:04
#21 Jo @ ignorere alle escape chars i en ENKELT streng.

dvs.
@"\" = "\"
@"\" + "\" = "\\" (her er 2 strenge, den ignorere escape chars i den første streng, ikke den anden).
@"\" + @"\" = "\\".
Giga Nørd
21-12-2012 11:07
#

Mod dumhed kæmper selv guderne forgæves...


Jeg giver op. 0# Har fået svar.

/mvh
Ultra Nørd
21-12-2012 11:59
Hehe, sjov diskussion :) - det kan vel med lethed tjekkes.
HOL Moderator
21-12-2012 12:45
#13
Nej, det er jeg ikke.
Du har 3 strenge i det eksempel. Ikke én.
csbc

#26

Monster Supporter
21-12-2012 14:12
Seriøst.

Læs denne: http://msdn.microsoft.com/en-us/lib...

Tror ikke at der er mere tvivl omkring dette mere.
Bruger påkrævet
En bruger er påkrævet for at oprette svar på Hardwareonline.dk
Du kan oprette en bruger her eller logge ind her

Log ind for at få flere funktioner