Python 如何在不使用replace()函数的情况下将字符串中的子字符串转换为大写?

Python 如何在不使用replace()函数的情况下将字符串中的子字符串转换为大写?,python,python-3.x,Python,Python 3.x,我有: 我需要检查sub是否在s1中,如果是,我需要将sub转换为字符串中的大写字母 例如: def my_replace(s1,sub): # ? def my_replace(s1,sub): return s1.replace(sub, sub.upper()) 印刷品: s1 = "mouse is useful thing" sub = "use" 这样做: moUSE is USEful thing 你可以用。见下文: s

我有:

我需要检查
sub
是否在
s1
中,如果是,我需要将sub转换为字符串中的大写字母

例如:

def my_replace(s1,sub):
    # ?
def my_replace(s1,sub):
   return s1.replace(sub, sub.upper())
印刷品:

s1 = "mouse is useful thing"
sub = "use"
这样做:

moUSE is USEful thing
你可以用。见下文:

s.replace(input_string, input_string.upper())
例如:

def my_replace(s1,sub):
    # ?
def my_replace(s1,sub):
   return s1.replace(sub, sub.upper())
输出将是:

s1 = "mouse is useful thing"
sub = "use"

通过string.replace函数可以实现这一点

其使用示例如下:

>>> my_replace(s1,sub)

'moUSE is USEful thing'

您可以结合使用
split()
join()
函数

def my_更换(s1,sub):
温度=s1.分体式(分体式)
s1=副上部()连接(临时)
返回s1
打印(my_replace('鼠标是有用的东西','use'))

输出:鼠标是有用的东西

因为您指定不能使用
str.replace()
,如果没有该方法,此解决方案将适用于您:

def my_更换(s1,sub):
临时=列表(s1)
对于idx,枚举中的e(s1):
如果e==sub[0]和s1[idx:idx+len(sub)]==sub:
温度[idx:idx+len(sub)]=sub.upper()
返回“”加入(临时)
此函数首先从字符串
s1
创建临时列表
temp
。这样我们就可以轻松地更改列表的值(
str
是不可变的,
list
不是)。然后我们可以并行地遍历
s1
的索引(
idx
)和元素(
e
)。当迭代到达
sub
的第一个字母时,它考虑接下来的n个元素,其中n是
sub
的长度。如果子字符串等于
sub
,则会将列表中与该子字符串匹配的元素更改为该元素的大写。在函数末尾,它使用
list.join()
返回一个已联接的
temp
。你的结果如下:

res=my_replace(s1,sub)
“鼠标是有用的东西”

我在没有替换的情况下尝试过,结果与它旁边的一位朋友非常相似=)


在回答了
replace
之后,您将问题的描述更改为不使用replace函数,然后您对使用
replace
的问题进行了否决?如果你有要求,请在答案上发表评论,不要投反对票。它奏效了,谢谢。是的,我知道,它奏效了,但我不想使用replace()函数,但谢谢,我解决了它,实际上我是begginer,不知道你写的一些算法。谢谢你的帮助