删除标点符号并将其放在字符串末尾

时间:2017-06-07 18:25:00

标签: javascript

我试图编写一个函数,在执行时将删除单词中的标点符号并将标记放在末尾。移除位工作正常,直到我附加了在末尾添加相同标记的部分;现在而不是删除punc。在字符串的内部,它留在那里并且将它添加到最后,这不是我想要的。我的代码如下:

function containsPunctuation(word) {
    var new_word;
    new_word = word.replace(".", "");
    new_word = word.replace("!", "");
    new_word = word.replace(";", "");
    new_word = word.replace(",", "");
    new_word = word.replace("?", "");
    if (word.includes(".") === true) {
        new_word = new_word + ".";
    }
    return new_word;
}

3 个答案:

答案 0 :(得分:1)

您的代码有三个主要问题:

1

首次更换后,您必须在new_world

上进行操作
var new_word;
new_word = word.replace(".", "");
new_word = new_word.replace("!", "");

或更简单地说,您可以直接对接收的参数进行操作,而无需使用其他变量:

word = word.replace(".", "");
word = word.replace("!", "");

2

请记住,replace()仅在第一次出现时替换。

如果不是您想要的行为,您可以使用此功能:

function StringReplace( str, fnd, rep ) {
    return str.split(fnd).join(rep);
}

然后

    word = StringReplace( word, ".", "");
    /* ...and so on */

3

在开始替换之前必须检查字符串是否包含标点符号.(并删除每个.)所以在开头...

var addPunctuation;
addPunctuation = word.includes(".");

然后在函数返回之前:

if( addPunctuation ) {
    word += '.';
}

整个事情变成

function StringReplace( str, fnd, rep ) {
    return str.split(fnd).join(rep);
}

function containsPunctuation(word) {
    var addPunctuation;
    addPunctuation = word.includes(".");

    word = StringReplace(word, ".", "");
    word = StringReplace(word, "!", "");
    word = StringReplace(word, ";", "");
    word = StringReplace(word, ",", "");
    word = StringReplace(word, "?", "");

    if( addPunctuation ) {
        word += ".";
    }

    return word;
}

答案 1 :(得分:1)

为什么不使用正则表达式替换不需要的字符?

var string = 'a,b;c!d.e?f';

string = string.replace(/[.,;!?]/g, '') + '.';

console.log(string);

答案 2 :(得分:0)

在此处的代码中,行new_word = word.replace(".", "");正在将字符串new_word替换为word中的预期值(不带。) 虽然变量词实际上并没有。删除,但只是你要设置的值,new_word。所以换的时候!来了,word.replace中的值字仍然包含。从第一次替换,因为它只用新词替换。所以这样的事情可以在你的场景中起作用,可以改进,但只是一个概念点。

function containsPunctuation(word) {
        var new_word;
        new_word = word.replace(".", "");
        new_word = new_word.replace("!", "");
        new_word = new_word.replace(";", "");
        new_word = new_word.replace(",", "");
        new_word = new_word.replace("?", "");
        if (word.includes(".") === true) {
            new_word = new_word + ".";
        }
        return new_word;
    }