3

我正在尝试做一个小标志猜谜游戏。我有一组徽标名称,然后您必须猜测它是哪个徽标名称。

我已经使用下面的代码从徽标名称中删除了空格。

var cleanLogoName = randomLogoName.replace(/ /g,'');

然后我想通过使用此代码知道徽标名称中的字符数。

var numberOfChar = cleanLogoName.length;

然而,该游戏是一个刽子手游戏,所以我不需要多次计算相同的角色。

例如:

可口可乐

我只需要计算 c、a、o 一次而不是两次。

无论如何用javascript来做到这一点?

4

2 回答 2

4

您可以使用正则表达式来检测和删除多次出现的字符:

"coca cola".replace(/\s|(.)(?=.*\1)/g, "").length // 4

(在前瞻表达式中使用对捕获的字母的反向引用

于 2013-08-15T12:39:00.847 回答
1

我认为一些伪代码会帮助你更好地理解这个概念,并鼓励你自己解决问题。如果您需要,这提供了一个无正则表达式的解决方案。

Define an empty list of characters.
Define a variable, count = 0;

for every letter in your word
    if(list does not contain this letter)
        count = count + 1
        list.add(count)
于 2013-08-15T12:40:16.473 回答