0

我正在做家庭作业,并且必须制作一个有效的刽子手应用程序。我得到了大部分工作,但我想做一些事情,但不知道该怎么做。

我想要做什么:有一个名为 的字符串$string,其中包含来自单词列表的随机单词。当我开始刽子手时,我想显示"*"随机单词中的每个字符。"*"其次,当玩家猜到它时,我想将它与真实的字符值连接起来。

因此,如果我想显示单词“Hello”"*****"并且当有人猜到一个字母时"l",它将显示"**ll*"

我试过的:

子串替换 - http://tldp.org/LDP/abs/html/string-manipulation.html

tr (在几种格式中,并没有真正理解如何正确使用它。我绑定[CHAR*REPEAT]但不断收到错误)并搜索了很多网站,但大多数点击是关于连接 1 个特定字符而不是所有字符细绳。

你能帮我理解吗?

4

2 回答 2

4

bash 的参数扩展模式匹配会:

$ string="hello world"
$ guess=""
$ echo "${string//[^[:space:]$guess]/*}"
***** *****

$ guess+="l"
$ echo "${string//[^[:space:]$guess]/*}"
**ll* ***l*

$ guess+="o"
$ echo "${string//[^[:space:]$guess]/*}"
**llo *o*l*
于 2013-01-11T22:23:21.330 回答
2

如果你有一个猜测的字符列表和你的字符串,你可以通过告诉tr用“*”替换除了猜测的字符、空格和换行符之外的所有内容来屏蔽它:

guessed="etaonris"
string="doing a homework assignment"
masked=$(tr -c "\n $guessed" "*" <<< "$string")
echo "$masked"

这给你*oin* a *o*e*or* assi*n*ent

于 2013-01-11T19:02:09.277 回答