1

我正在尝试仅删除(从字符串中)顺序出现的重复项。也就是说,给定字符串“1 2 3 3 2 1”,只有一个 3 应该被删除(即“1 2 3 2 1”)。我真的以为我已经弄清楚了。然后,在测试过程中,我发现了一个不起作用的案例。我已经尝试了我能想到的所有组合,但无济于事。当然这很简单,因为这不是一件难事(显然,除了我)。

以下是一些 Javascript 来说明问题。第一个 testVal 字符串被正确处理。注释掉的 testVal 字符串未正确处理。

// The following string should reduce to: MTC MTCA MTC ORD MTC (it does).
var testVal = "MTC MTC MTCA MTC MTC MTC ORD MTC";

// The following string should reduce to: MTC (it does not.  Result = MTC MTC).
// The string MTC MTC MTC MTC also only reduces to MTC MTC, so I'm thinking
// it's a whitespace issue.
// var testVal = "MTC MTC";

while (/\b(\s*\w+\s*)\b\1/.test(testVal)) {
    testVal = testVal.replace(/\b(\s*\w+\s*)\b\1/g,'$1');
}

alert(testVal1);
4

1 回答 1

1

您将空格作为要匹配两次的单词的一部分。尝试

/\b(\w+)\s+\1\b/
于 2012-07-12T23:35:27.990 回答