到目前为止我的代码是:
def ChangeString():
print (userString.replace(
userString =str(input("Please enter a string "))
ChangeString()
在字符串中,我需要用*替换第一个字符的所有实例,而不是实际替换第一个字符本身。一个例子是,让我说我有" Bobble&#34 ;;该函数将返回类似于" Bo ** le"。
答案 0 :(得分:1)
>>> test = 'Bobble'
>>> test = test[0] +''.join(l if l.lower() != test[0].lower() else '*' for l in test[1:])
>>> print test
Bo**le
答案 1 :(得分:1)
userString[0] + userString[1:].replace(userString[0], "*")
答案 2 :(得分:1)
你也可以使用正则表达式:
test package
演示:
import re
def ign_first(s, repl):
return re.sub(r"(?<!^){}".format(s[0]), repl, s, flags=re.I)
或者将In [5]: s = "Bobble"
In [6]: ign_first(s, "*")
Out[6]: 'Bo**le'
与集合一起使用:
str.join
演示:
def ign_first(s, repl):
first_ch = s[0]
st = {first_ch, first_ch.lower()}
return first_ch + "".join([repl if ch in st else ch for ch in s[1:]])
答案 3 :(得分:0)
我会使用切片和lower()
。
>>> test = 'Bobble'
>>> test[0] + test[1:].lower().replace(test[0].lower(), '*')
'Bo**le'
答案 4 :(得分:0)
无需使用其他变量
>>> st='Bobble'
>>> st=st[0]+st[1:].lower().replace(st[0].lower(),'*')
>>> st
'Bo**le'
答案 5 :(得分:0)
使用正则表达式的不区分大小写的解决方案:
import re
string = "Bobble"
outcome = string[0]+re.sub(string[0].lower() + '|' + string[0].upper(),
"*", string[1:].lower())
>>>
Bo**le