在JavaScript变量中转发斜杠

时间:2011-07-12 20:50:26

标签: javascript

我有以下代码。

{
    var custname= "@1";
    var file = "c:/temp/"+ custname + ".txt";
    var fso  = new ActiveXObject("Scripting.FileSystemObject");
    var fh = fso.CreateTextFile(file, true, false);
    fh.Write(text);
    fh.Close();
}

@ 1来自数据库,它是客户的名字。上面的代码一直有效,直到我遇到一个带有正斜杠的客户名称,例如“公司A / S”。

如何使用正斜杠为客户提供此功能?

5 个答案:

答案 0 :(得分:7)

将客户名称中的任何斜杠替换为另一个字符(例如下划线)。

var custname= "@1";
custname = custname.replace(/\//g, '_');
...

请注意在正则表达式上使用g修饰符,以确保替换每个斜杠字符。

这也是使用正则表达式而不仅仅是'/'的原因 - String.replace的子字符串版本不会处理重复出现。

答案 1 :(得分:1)

您可以替换(或删除)文件系统不允许的任何字符。例如:

custname = custname.replace(/[/|&$]/g, '');

答案 2 :(得分:0)

如果是Windows,你的文件名不能包含“/”,所以我个人只需用其他东西替换所有“/”。

var file = "c:/temp/"+ custname.replace(/\//g, "-") + ".txt";

答案 3 :(得分:0)

您也是从客户名称创建文件,因此当他们的名称中包含“/”时,文件目录可能如下所示:

var custname= "/isuck";
var file = "c:/temp/"+ custname + ".txt";

文件等于:

c:/temp//isuck.txt

哪个不是有效文件。 SMART的举措是不允许客户名称中的任何“/”标记,这实际上没有意义。或者如果他们必须以这种方式放置它,在存储之前删除'/',或者用另一个字符替换它。

答案 4 :(得分:0)

为数据库中的每个客户存储一个id(例如数字),并获取数据库以返回此信息。使用文件名的数字。如果您需要该名称,请执行另一个查询。