我正在做家庭作业,必须制作一个有效的刽子手应用程序。 我得到了大部分工作,但我想做点什么,并且无法弄明白该怎么做。
我想做什么:
有一个名为$string
的字符串,其中包含单词列表中的随机单词。当我开始使用hangman时,我想为随机单词中的每个字符显示"*"
。
其次,我希望在玩家猜到的时候,将"*"
与真实的角色值联系起来。
因此,如果单词为“Hello”,我想显示"*****"
,当有人猜到一封信"l"
时,它会显示"**ll*"
。
我尝试了什么:
替换子字符串 - http://tldp.org/LDP/abs/html/string-manipulation.html
tr(有几种格式,并没有真正理解如何正确使用它。我绑定[CHAR*REPEAT]
但一直收到错误)
并搜索了很多网站,但大多数热门内容都是关于查找1个特定字符而不是字符串中的所有字符。
你能帮我理解吗?
答案 0 :(得分:4)
bash的parameter expansion和pattern matching会:
$ 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*
答案 1 :(得分: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
。