Escaping escape characters in JScript

J

Jon Maz

Hi,

I have been getting hopelessly confused with escaping escape characters in
JScript! All I want to do is write a simple funtion:

function DoubleUpBackSlash(inputString)
{
???????
}

which will do the following:

<%
var inputString = "D:\Internet\test2.txt"
Response.Write(DoubleUpBackSlash(inputString));
%>

....printing out the following on the screen:
D:\\Internet\\test2.txt

Can anyone fill in the blanks in the function for me?

TIA,

JON
 
R

Ray Costanzo [MVP]

By the time you're passing the value to your function, you have to already
have the \s escaped. So, if you're hard-coding in the string value, which
you're currently doing, hard-code it with the \s doubled up already.

What are you trying to do with the value afterwards? Are you putting it in
a client-side javascript function? If so, escaping will have to be handled
again, but tell us what you're doing first before we worry about that.

Ray at work
 
J

Jon Maz

Hi Ray,

This is what I'm after (see my comments in the code):

<%
var fso = Server.CreateObject("Scripting.FileSystemObject");

//doesn't work
var wfile = fso.CreateTextFile("D:\Internet\test2.txt", true);

//works
var wfile = fso.CreateTextFile(" D:\\Internet\\test2.txt", true);

//want this to work!
var wfile =
fso.CreateTextFile(DoubleUpBackSlash("D:\Internet\test2.txt"), true);

wfile.WriteLine("This is a test.");
wfile.Close();
fso = null;
%>

Thanks,

JON
 
R

Ray Costanzo [MVP]

The //want this to work won't work in jscript! Is there any particular
reason that you don't want want to use the built-in escape functionality
that is required? You can't just elect to not use it. If you share the
reason for your desire, you may be surprised by a creative solution!

Ray at work
 
B

Bob Barrows [MVP]

Jon said:
Hi Ray,

This is what I'm after (see my comments in the code):

<%
var fso = Server.CreateObject("Scripting.FileSystemObject");

//doesn't work
var wfile = fso.CreateTextFile("D:\Internet\test2.txt", true);

//works
var wfile = fso.CreateTextFile(" D:\\Internet\\test2.txt", true);

//want this to work!
var wfile =
fso.CreateTextFile(DoubleUpBackSlash("D:\Internet\test2.txt"),
true);

wfile.WriteLine("This is a test.");
wfile.Close();
fso = null;
%>

Thanks,

JON

If you are supplying a string literal (as above) you would have had to
already have typed in the \\ in order to get the string properly
interpreted. It's the same as if you typed in a string literal containing a
quote in vbscript:

s = "he said "something""

This would not be correctly interpreted either until you doubled the quotes.
s = "he said ""something"""

Bob Barrows
 
C

Chris Hohmann

Jon Maz said:
Hi Ray,

This is what I'm after (see my comments in the code):

<%
var fso = Server.CreateObject("Scripting.FileSystemObject");

//doesn't work
var wfile = fso.CreateTextFile("D:\Internet\test2.txt", true);

//works
var wfile = fso.CreateTextFile(" D:\\Internet\\test2.txt", true);

//want this to work!
var wfile =
fso.CreateTextFile(DoubleUpBackSlash("D:\Internet\test2.txt"), true);

wfile.WriteLine("This is a test.");
wfile.Close();
fso = null;
%>

Thanks,

JON

Unfortunately, it can't be done. It's the equivalent of trying to create the
DoubleUpQuote function in VBScript. By the time you construct the string to
pass to the function it's already too late. Sort of a weird catch-22
situation.
 
J

Jon Maz

Hi Ray,

Reason's simple - it was a pain in the you-know-where copying file paths out
of a browser address window and manually doubling up the back slashes, so I
just thought I'd try to automate the process instead...

Cheers,

J
 
R

Ray Costanzo [MVP]

Wouldn't the browser address use a /?

If your values are already in variables, you don't have to escape the \. If
you have a variable with a value of "D:\Path" you don't have to escape that.

Again, if you show us what you're doing, you may find an answer.

Ray at work
 
R

Ray Costanzo [MVP]

How are you pulling in a Windows Explorer address bar from ASP code?

Ray at work
 
D

Daniel Kirsch

Jon said:
//want this to work!
var wfile =
fso.CreateTextFile(DoubleUpBackSlash("D:\Internet\test2.txt"), true);

The backslash indicates the following character to be printed as is. In
this case you just have "D:Internettest2.txt". However, you may use
another web typical syntax with slashes:

fso.CreateTextFile(makeLocalePath("D:/Internet/test2.txt"), true);

function makeLocalePath(path) {
return path.replace(/\//g,"\\");
}

Daniel
 
J

Jon Maz

I'm not doing it from code, I'm doing it with the help of a mouse....

I think Bob & Chris, in another branch of this thread, have explained that
what I was trying to do is actually impossible...

J
 
L

Lasse Reichstein Nielsen

Daniel Kirsch said:
Jon Maz wrote:

The backslash indicates the following character to be printed as
is.

Actually, a backslash followed by another character together form an
"escape sequence", which stands for a single character. Some escape
sequences for non-printing characters are
\n - newline
\r - return
\t - tab
(there are more, but not many). For characters which are not defined
as part of a special escape sequence, the escape sequence just becomes
the second character itself.
In this case you just have "D:Internettest2.txt".

So, in this case, "\t" becomes a tab character, and you have:
"D:Internet est2.txt"
^ This is a tab character, ASCII 8.


/L
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top