我是python的新手,我正在创建一个与.replace方法相同的函数。
到目前为止,我有这个:
def replace_str (string, substring, replace):
my_str = ""
for index in range(len(string)):
if string[index:index+len(substring)] == substring :
my_str += replace
else:
my_str += string[index]
return my_str
测试时:
print (replace_str("hello", "ell", "xx"))
它返回:
hxxllo
我希望有人可以帮助我指出正确的方向,以便用“xx”替换“ell”,然后跳到“o”并打印:
hxxo
作为.replace字符串方法。
答案 0 :(得分:0)
通常,使用带有手工维护的索引变量的while
是一个坏主意,但是当你需要在循环中操作索引时,它可以是一个好的选择:
def replace_str(string, substring, replace):
my_str = ""
index = 0
while index < len(string):
if string[index:index+len(substring)] == substring:
my_str += replace
# advance index past the end of replaced part
else:
my_str += string[index]
# advance index to the next character
return my_str
请注意x.replace(y, z)
在y
为空时会有所不同。如果您想匹配该行为,可能需要在代码中使用特殊情况。
答案 1 :(得分:0)
您可以执行以下操作:
import sys
def replace_str(string, substring, replace):
new_string = ''
substr_idx = 0
for character in string:
if character == substring[substr_idx]:
substr_idx += 1
else:
new_string += character
if substr_idx == len(substring):
new_string += replace
substr_idx = 0
return new_string
if len(sys.argv) != 4:
print("Usage: %s [string] [substring] [replace]" % sys.argv[0])
sys.exit(1)
print(replace_str(sys.argv[1], sys.argv[2], sys.argv[3]))
请注意,在列表上使用str.join()命令(list.append是O(1))比上面的工作更快,但是你说你不能使用字符串方法。
使用示例:
$ python str.py hello ell pa
hpao
$ python str.py helloella ell pa
hpaopaa