views:

818

answers:

3

I have been all over the 'tubes and I can't figure this one out. Might be simple.

The following String.Format call:

return dt.ToString("MMM d yy 'at' H:mmm");

Correctly returns this:

Sep 23 08 at 12:57

Now let's say I want to add a single quote before the year, to return this:

Sep 23 '08 at 12:57

Since the single quote is a reserved escape character, how do I escape the single quote to get it to display?

I have tried double, triple, and quad single quotes, with no luck.

+1  A: 

You could just use the HTML entity, if it's for HTML.

-- Edit

'

-- Edit

Just to make this post not wrong, as everyone else has noted, escaping works fine :)

string s = t.ToString("MMM d \\'yy 'at' H:mmm");

And that's the last time I don't test something based on who is posting :)

Noon Silk
+15  A: 

You can escape it using a backslash which you will have to escape. Either

return dt.ToString(@"MMM d \'yy 'at' H:mmm");

or

return dt.ToString("MMM d \\'yy 'at' H:mmm");
Martin Liversage
in my defense, I became mesmerized by the way you have to do {{{ to escape curlies in a `String.Format()` and temporarily lost my mind.. thanks!
Jeff Atwood
Oh man! This accepted answer has to go on my CV now... ;^)
Martin Liversage
The % characters are unnecessary in this case as %d and %H are combined with other format patterns. It makes it a bit clearer without them.
David G
+2  A: 

I don't like the C# @ strings unless I really have to use them so I would actually go with this.

return dt.ToString("MMM d \\'yy 'at' H:mmm");

It's just a preference though for which you find easier to "read".

Robin Day
Try writing a unit test that tests a class that detects escaped characters and processes them. You'll start loving @ strings in a big hurry.
Jeff Tucker
After 5 minutes writing regexes, I started to love @ strings too. :-)
Christian Hayter