首页 > 解决方案 > 使用 Javascript 搜索字符串

问题描述

大家好,

我正在尝试测试使用用户输入的 C 程序......就像一个学习应用程序。所以 avaliator(老师)可以编写测试,我在 docker 的帮助下编译代码并取回我发送的程序的结果。之后,我验证其中一个案例测试是否失败..

为此,我有两个字符串,如下所示:

result = "input_compiled1540323505983: /home/compiler/input/input.c:9: main: Assertion `B==2' failed. timeout: the monitor command dumped core Aborted "和一个带有案例测试的数组,例如:caseTests = [" assert(A==3); // A 的值必须是 3;", " assert(B==2); // B 的值必须是 2; ", " assert(strcmp(Fulano, "Fulano")==0); //Fulano 必须等于 Fulano]

我需要从我的服务器发回这样的东西:

{控制台:[真,真,真]}

其中每个 true 是测试数组中每个测试的对应测试

所以,我需要测试一个字符串是否包含另一个字符串的一部分......现在我这样做了:

criandoConsole = function(arrayErros, arrayResult){
    var consol = arrayErros.map( function( elem ) {
        var local = elem.match(/\((.*)\)/);

        if(arrayResult.indexOf(local) > -1 ) { 
            return false;
        }
        else return true;
    }); 
    return consol;
}

我想知道是否有更有效的方法可以做到这一点。我正在使用nodejs作为服务器。有没有人知道更好的方法?!

ps:只是做喜欢result.contains(caseTests[0])没有工作..

标签: node.jsstringunit-testing

解决方案


我知道这正在改变问题,但是您能否将错误数组简化为仅包含搜索词?例如,

result = "input_compiled1540323505983: /home/compiler/input/input.c:9: main: Assertion `B==2' failed. timeout: the monitored command dumped core Aborted ";

//simplify the search patterns
caseTests = [
"A==3",
"B==2",
"strcmp(Fulano, \"Fulano\")==0"
]

criandoConsole = function(arrayErros, arrayResult){
    var consol = arrayErros.map( function( elem ) {
    if (arrayResult.indexOf(elem) != -1)
      return false; //assert failed?
    else
      return true; //success?
    });
    return consol;
}

console.log(criandoConsole(caseTests,result));

推荐阅读