首页 > 解决方案 > Javascript:给定一个变量数组,删除字符并输出另一个数组的函数

问题描述

所以我还在学习 Javascript,所以我知道这是一个基本问题,我真的很想了解我所缺少的。我有一个变量数组,我需要一个删除特殊字符并将结果作为数组返回的函数。

这是我的代码:

    var myArray = [what_hap, desc_injury];
    function ds (string) {
    string.replace(/[\\]/g, ' ')
    string.replace(/[\"]/g, ' ')
    string.replace(/[\/]/g, '-')
    string.replace(/[\b]/g, ' ')
    string.replace(/[\f]/g, ' ')
    string.replace(/[\n]/g, ',')
    string.replace(/[\r]/g, ' ')
    string.replace(/[\t]/g, ' ');
    return string;
}
ds (myArray);

我知道那是行不通的,所以我只是想学习最简单、最干净的输出方式:

[whatHap: TEXTw/oSpecialCharacters, descInj: TEXTw/oSpecialCharacters]

有人愿意指导菜鸟吗?谢谢!:)

标签: javascriptregex

解决方案


对问题的评论是正确的,您需要更好地说明您的要求,但我会尝试根据我对您预期结果的假设为您提供一些指导。

需要注意的一件重要的事情是,它string.replace()不会改变字符串本身,它会返回一个带有替换的新字符串,正如您在文档中看到的那样。做很多你需要做的替换string = string.replace('a', '-')

寻找整个阵列的解决方案。有几种方法可以在 javascript 中处理数组:for loopArray.forEach()Array.map()。我敦促您阅读每个文档并自行查找示例以了解每个示例以及它们最有用的地方。

由于您想替换数组中的所有内容,我建议您使用它们.map() ,或者.foreach()因为它们将为您循环遍历整个数组,而您不必自己跟踪索引。下面是使用每个来实现我认为你想要的东西的例子。

地图

function removeSpecial(str) {
    // replace all these character with ' '
    // \ " \b \f \r \t
    str = str.replace(/[\\"\b\f\r\t]/g, ' ');
    // replace / with -
    str = str.replace(/\//g, '-');
    // replace \n with ,
    str = str.replace(/\n/g, ',');
    return str;
}
let myArray = ["string\\other", "test/path"];
let withoutSpecial = myArray.map(removeSpecial); // ["string other", "test-path"]

为每个

function removeSpecial(myArray) {
    let withoutSpecial = [];
    myArray.forEach(function(str) {
        str = str.replace(/[\\"\b\f\r\t]/g, ' ');
        // replace / with -
        str = str.replace(/\//g, '-');
        // replace \n with ,
        str = str.replace(/\n/g, ',');
        withoutSpecial.push(str)
    });
    return withoutSpecial;
}

let myArray = ["string\\other", "test/path"];
let withoutSpecial = removeSpecial(myArray);  // ["string other", "test-path"]

每个功能的内部可以是您需要的任何替代品,或者您可以将它们替换为您已经拥有的功能。Map在这种情况下更强大,因为它将替换数组中的值,它用于将现有值映射到每个元素一一对应的新值。另一方面,该forEach解决方案要求您创建元素并将其添加到新数组中,当您需要在数组本身之外为数组中的每个元素执行某些操作时,这会更好。

PS。如果您想要更复杂的替换,您应该查看https://regex101.com/以获取构建正则表达式的帮助,但在这种情况下您并不真的需要它们


推荐阅读