我有以下代码。
{
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”。
如何使用正斜杠为客户提供此功能?
答案 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(例如数字),并获取数据库以返回此信息。使用文件名的数字。如果您需要该名称,请执行另一个查询。