.toString不能处理数组值? (的Jscript)

时间:2014-09-16 19:39:18

标签: arrays tostring jscript wsh

我正在尝试将包含路径的数组值转换为字符串。我想这样做,因为我想使用正则表达式.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
        }
    }

1 个答案:

答案 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执行脚本,可以在闲暇时进行研究)