2

我已经在谷歌上搜索了几个小时并得到了部分解决方案。

我是 Groovy 和正则表达式的新手。这些年来我偶尔使用过正则表达式,但我对它很不适应。

我有一个简单的游戏,可以检查您与隐藏单词有多少共同字母。

为简单起见,假设单词是“pan”,而人输入的是“can”。

我希望正则表达式的结果给我“一个”。

现在,我通过这样做(在 Groovy 中)得到了部分工作:

// Where "guess" is the user's try and "word" is the word they need to guess.
def expr = "[$word]"
def result = guess.find(expr)

结果字符串仅包含第一个匹配的字母。有人有更优雅的解决方案吗?提前致谢

4

3 回答 3

3

我认为这不是正则表达式的用例。您必须注意诸如不让用户自动猜测他是否进入等事情.*

典型的收集工作更适合 IMO 的这项任务。一种解决方案是找到两个单词的交集,将它们视为字符集:

(word as Set).intersect(guess as Set).join()

或者过滤出现在密码词中的猜测字符:

guess.findAll { word.contains(it) }.unique().join()
于 2013-01-02T15:53:18.867 回答
1

假设现在两个字符串是 s1 和 s2 来查找公共字符串:

commonString=s1.replaceAll("[^"+s2+"]","");

如果您的单词包含元字符,则首先执行以下操作:

Pattern.quote(s2);

进而

commonString=s1.replaceAll("[^"+s2+"]","");
于 2013-01-02T15:22:36.330 回答
0

你可以试试:

guess.findAll( /[$word]/ ).join()
于 2013-01-02T15:27:16.333 回答