我正在尝试将包含路径的数组值转换为字符串。我想这样做,因为我想使用正则表达式.replace
方法来摆脱路径的大部分,只留下文件及其包含的文件夹。我认为数组中的路径是一个字符串,但.replace
不适用于它,尽管它可以很好地将555
转换为666
。
程序打印出arrayValue很好但是当我把.toString()
放在它上面时会抛出一个错误(我无法读取,因为控制台立即关闭,我不知道如何让它暂停除外)。
for (i=0; i < dirArrays.length; i++) {
fileIsThere = false;
for (k=0; k < dirArrays[i].length; k++) {
arrayValue = dirArrays[i][k];
x = 555
WScript.Echo('dirArrays[' + i + '][' + k + '] = ' + x.toString() + ' ' + x.toString().replace(/5/g, '6') + ' ' + arrayValue.toString() )
if ( /replacedData.txt$/.test(dirArrays[i][k]) ) {
fileIsThere = true;
break;
}
}
if (!fileIsThere) {
throw 'replacedData.txt missing from \mls_num_' + i
}
}
答案 0 :(得分:0)
一般规则:使用Array.slice获取数组的一部分。适用于您的问题:使用Array.slice(。length - n,.length)获取路径的“尾部”:
/* I want ... to get rid of the large part of the path and leave just
the file and its containing folder
*/
var sPath = WScript.ScriptFullName;
WScript.Echo(0, sPath);
var aPath = sPath.split(/\\/);
WScript.Echo(1, aPath);
var aTail = aPath.slice(aPath.length - 2, aPath.length);
WScript.Echo(2, aTail.join("\\"));
输出:
cscript 25877076.js
0 E:\trials\SoTrials\answers\25301708\jscript\25877076.js
1 E:,trials,SoTrials,answers,25301708,jscript,25877076.js
2 jscript\25877076.js
(如果您通过控制台/'DOS框中的cscript.exe执行脚本,可以在闲暇时进行研究)