如果char
后面有一个数字符号,我如何将'*'添加到字符串中,在特定的char
后面?
以下是我尝试过的代码,但不起作用:
def timesAdd(string, char):
nString = None;
if char in string:
for i in range(len(string)):
if string[i] == char:
if string[i-1].isdigit():
nString += '*' + char;
else:
nString += char;
else:
nString += string[i];
return nString;
我想做的是:
1.扫描字符串的每个符号,查看它是否等于char
1.如果字符串中的i
等于char
,返回1,看看它是否是一个数字。
1.如果它是一个数字,在char
之前加上'*',否则只将char
添加到缓冲区
1.完成后,返回buffer。
为什么它不起作用,我如何改进它?
- 旁注,我没有尝试的另一个想法是制作一个
array of chars
,看看string[i]
是否等于array of chars
中的一个符号(array
的示例:“1234567890”)。*
3条答案
按热度按时间f3temu5u1#
deceze是对的。这段代码应该可以解决你的问题。
xn1cxnb42#
有几个原因这不起作用:
1.将
nString
初始化为None
。当您尝试使用+=
运算符向nString
追加字符时,它将抛出错误。1.循环遍历
range(len(string))
。这将在第一次迭代时抛出一个错误,因为当你的循环变量i = 0
,string[i - 1]
将不存在。要解决这些问题,您需要(1)将
nString
初始化为字符串(2)在i = 1
处启动循环下面是工作代码:
myss37ts3#
你也可以在不使用 re 的情况下这样做,这样也会稍微加快实现速度: