<p>如果我想编写一个函数<code>mask(a, b)</code>,它包含两个字符串<code>a</code>和<code>b</code>,并将字母更改为<code>a</code>中的<code>*</code>,顺序与它们在<code>b</code>中的出现顺序相同,则返回一个新字符串</p>
<p>例如,如果<code>s1="How are you doing today"</code>和<code>s2="hardod"</code>,则新字符串/更新的s1字符串应为<code>"*ow **e you **ing to*ay"</code></p>
<p>有没有办法做到这一点</p>
<pre><code>def mask(a,b):
for ch in s2:
s1 = s1.replace(ch, '*', 1)
return s1
print(mask("How are you doing today", "hardod"))
</code></pre>
<p>然后我得到输出<code>H*ll*, *ow **e you Anders?</code>,这是错误的,因为它们应该依次替换,即b中的第一个字母应该替换a中出现在<strong>的第一个索引上的同一个字母,不再是<strong>,然后b应该继续到第二个字母ib,替换它出现的第一个索引上的同一个字母ia,不再是等</p>
<p>我会这样做:</p>
<pre><code>def mask(a, b):
start_index = 0
for c in b:
for i in range(start_index, len(a)):
if c == a[i]:
a = "".join((a[:i], "*", a[i+1:]))
start_index = i+1
break
return a
</code></pre>
<p>您可以选择是否区分大小写</p>