即使它出现不止一次,我如何将一个字符统计为一个?

时间:2013-08-15 12:35:17

标签: javascript

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

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

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

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

var numberOfChar = cleanLogoName.length;

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

例如:

可口可乐

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

有没有用javaScript做到这一点?

2 个答案:

答案 0 :(得分:4)

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

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

(使用backreference to a captured letter中的lookahead expression

答案 1 :(得分: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)