繁体   English   中英

从字符串中删除标点符号和空格

[英]Remove punctuation and spaces from String

函数compress()将接受一个句子并返回一个字符串,其中所有空格和标点符号都将被删除。
此函数必须调用isWhiteSpace()isPunct()

我已经完成了要调用的函数,但是我不知道我的js代码中缺少什么来使其调用函数。

function compress(sent) {
    var punc = "; : . , ? ! - '' "" () {}";
    var space = " ";
    if (punc.test(param)) {
        return true
    } else {
        return false
    }
    if (space.test(param)) {
        return true
    } else {
        return false
    }
    isWhiteSpace(x);
    isPunct(x);
}

此函数必须调用isWhiteSpace()和isPunct()。

因此,您已经具有两个函数,当传递的字符为空格或标点符号时,我假定它们返回true 然后,您不需要也不应通过在代码中实现用于空格和标点的重复的基于正则表达式的文本来重复此功能。 保持干燥-不要重复自己。

基于这两个函数的compress函数如下所示:

 function isWhiteSpace(char) { return " \\t\\n".includes(char); } function isPunct(char) { return ";:.,?!-'\\"(){}".includes(char); } function compress(string) { return string .split("") .filter(char => !isWhiteSpace(char) && !isPunct(char)) .join(""); } console.log(compress("Hi! How are you?")); 

我同意正则表达式测试可能是现实世界中的首选选择:

function compress(string) {
  return string.match(/\w/g).join("");
}

但是,您特别要求提供一个调用isWhiteSpaceisPunct的解决方案。

您可以利用String.indexOf设计isPunct函数。

function isPunct(x) {
    // list of punctuation from the original question above
    var punc = ";:.,?!-'\"(){}";

    // if `x` is not found in `punc` this `x` is not punctuation
    if(punc.indexOf(x) === -1) {
        return false;
    } else {
        return true;
    }
}

解决isWhiteSpace更容易。

function isWhiteSpace(x) {
    if(x === ' ') {
        return true;
    } else {
        return false;
    }
}

您可以将所有内容与一个循环一起使用String.charAt检查一个字符串中的每个字符:

function compress(sent) {

    // a temp string
    var compressed = '';

    // check every character in the `sent` string
    for(var i = 0; i < sent.length; i++) {
        var letter = sent.charAt(i);

        // add non punctuation and whitespace characters to `compressed` string
        if(isPunct(letter) === false && isWhiteSpace(letter) === false) {
            compressed += letter;
        }
    }

    // return the temp string which has no punctuation or whitespace
    return compressed;
}

如果您在函数中返回某些内容,则执行将停止。

据我所知,您的函数不需要返回任何内容...因此您应该这样做

function compress(sent) { 
    var punc = ";:.,?!-'\"(){} ";
    var array = punc.split("");
    for (x = 0; x < array.length; x++) {
        sent = sent.replace(array[x], "");
    }
    isWhiteSpace(x); 
    isPunct(x);
    return sent;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM