Does JavaScript have literal strings?

JavascriptStringString Literals

Javascript Problem Overview


In C#, Ruby, and many other languages you can denote a string as to not need escaping. In C# it’s like this

string s = @"\whatever\this\is";

The results are when printed:

\whatever\this\is

Is this supported in any form in JavaScript?

Javascript Solutions


Solution 1 - Javascript

Short answer: No

Long answer: Noooooooooooooooooooooooooo

Solution 2 - Javascript

I don't know what you're getting at, but one way to get around the problem of escaping (etc) is use a trick that John Resig seems to like a lot. You include <script> blocks in a page, but give them a "type" like "text/plain" to make sure that the browser doesn't hand them over to Javascript. Then use the text of the script block for whatever you like.

<script id='a_string' type='text/plain'>
  Here is some stuff.
  There might be some \escape sequences in it.
</script>

Then you can grab that with $('#a_string').text() (or with getElementById if you're not using jQuery or something like that).

edit: Here's John Resig's explanation about why dropping stuff into script blocks like that is a good idea:

> Quick tip: Embedding scripts in your page that have a unknown content-type (such is the case here - the browser doesn't know how to execute a text/html script) are simply ignored by the browser - and by search engines and screenreaders. It's a perfect cloaking device for sneaking templates into your page. I like to use this technique for quick-and-dirty cases where I just need a little template or two on the page and want something light and fast.

Taken from this page: http://ejohn.org/blog/javascript-micro-templating/

Solution 3 - Javascript

Literal strings are available through the use of ES6 language features. Node.js v4.x now supports these and around 90% of the other ES6 additions as well.

Template literals (Template strings)

In JavaScript, string literals are known as template strings. And the syntax is pretty straightforward.

Solution 4 - Javascript

This will work as long as you don't throw a \x into the string!

var str = String.raw`\whatever\this\is`;

console.log(str);

Solution 5 - Javascript

Just escape the escapes

var myCrazyString = "\\yes\\we\\have\\no\\bananas"

Solution 6 - Javascript

I've got one solution to this ;)

function literalString(regex) {
    return ('' + regex).slice(1, -1);
};

O.innerHTML = literalString(/\whatever\this\is/);

<pre id=O>

You basically convert a regex to a string and remove the first and last characters.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDevelopingChrisView Question on Stackoverflow
Solution 1 - JavascriptPeter BaileyView Answer on Stackoverflow
Solution 2 - JavascriptPointyView Answer on Stackoverflow
Solution 3 - JavascriptIain J. ReidView Answer on Stackoverflow
Solution 4 - JavascriptJonathan NewtonView Answer on Stackoverflow
Solution 5 - JavascriptplodderView Answer on Stackoverflow
Solution 6 - Javascriptuser4227915View Answer on Stackoverflow