测试项为:
if trim('hello ') != 'hello':
print('left+测试失败!')
elif trim(' hello') != 'hello':
print('right+测试失败!')
elif trim(' hello ') != 'hello':
print('both+测试失败!')
elif trim(' hello world ') != 'hello world':
print('middle+测试失败!')
elif trim('') != '':
print('blank+测试失败!')
elif trim(' ') != '':
print('longBlank+测试失败!')
else:
print('测试成功!')
初学阶段,记录我看到这个题目自己的实现思路:
(1)获取第一个非空白字符和最后一个非空白字符的索引;
(2)用切片方式截取(1)中两个索引之间的值.
我的实现代码是:
def trim(s):
index=[]
for pos,letter in enumerate(s):
if letter !=" ":
index.append(pos) #遍历字符串,获取所有非空白字符的索引,存放至列表
if index==[]:
s="" #如果索引列表为空,表示字符串中无非空白字符,返回""
else:
s=s[index[0]:index[-1]+1] #截取中间字符串(因为切片右边区间为开区间,+1)
return s
可以测试通过,但是后来在网上看到其他朋友写的实现,简洁易懂,记录下给自己涨经验:
def trims(s):
if not isinstance(s,str):
raise ('not suportting')
if s==' ':
return ' '
else:
while s[:1] ==' ': #使用while循环每次去掉首部的一个空字符
s=s[1:]
while s[-1:] == ' ': #使用while循环每次去掉尾部的一个空字符
s=s[:-1]
return s