1:自定义实现strip()
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
算法:strip()仅移除首尾的指定字符,不能移除中间的先从首部开始移除

def customerize_strip(s,value=' '):
result =''
front =0
end = len(s)
#step1:找到首部顺序开始一个非指定字符的index
for i in range(len(s)):
if s[i] == value:
continue
else:
front =i
break
#step2:找到尾部倒序开始第一个非指定字符的index
for j in range(len(s)-1,-1,-1):
#range是一个开区间,所有第一个值为len(s)-1,第二个值写作-1,表示取到第0位
if s[j]==value:
continue
else:
end = j
break
for k in range(front,end+1):
result+=s[k]
return result
print(s)
print(customerize_strip(s))

2:自定义实现str.upper()
算法,需要考虑字符串中不仅包含字母,可能还有其他字符的情况

def customerize_upper(s):
result=''
import string
for i in s:
if i in string.ascii_lowercase:
result+=chr(ord(i)-32)
else:
result+=i
return result
print(customerize_upper(s))

3.自定义实现str.lower()
算法,需要考虑字符串中不仅包含字母,可能还有其他字符的情况

def customerize_lower(s):
result=''
import string
for i in s:
if i in string.ascii_uppercase:
result+=chr(ord(i)+32)
else:
result+=i
return result
print(customerize_lower(s))

4.自定义实现str.swapcase()
Python swapcase() 方法用于对字符串的大小写字母进行转换

def customerize_swapcase(s):
result =''
import string
for i in s:
if i in string.ascii_uppercase:
result+=chr(ord(i)+32)
elif i in string.ascii_lowercase:
result+=chr(ord(i)-32)
else:
result+=i
return result
print(customerize_swapcase(s))

5.自定义实现str. capitalize()
Python capitalize()将字符串的第一个字母变成大写,其他字母变小写

def customerize_capitalize(s):
result =''
import string
for i in range(len(s)):
if i==0 and s[i] in string.ascii_lowercase:
result+=chr(ord(s[i])-32)
elif s[i] in string.ascii_uppercase:
result+=chr(ord(s[i])+32)
else:
result+=s[i]
return result
print(customerize_capitalize(s))

6.自定义实现str.title()
Python title() 方法返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写

def customerize_title(s):
result =[]
s= s.split()
import string
for i in s:
each =''
for j in range(len(i)):
if j==0 and i[j] in string.ascii_lowercase:
each += chr(ord(i[j])-32)
else:
each += i[j]
result.append(each)
return ' '.join(result)
s1= 'I am a good girl ha ha'
print(customerize_title(s1))

7.自定义实现str.ljust(numbe)
Python ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串

def customerize_ljust(s,lenth,fillchar=' '):
if lenth<=len(s):
return s
else:
fill =''
for i in range(lenth-len(s)):
fill+=fillchar
result =s+fill
return result
print(customerize_ljust(s1,23,'*'))
print(len(s1))
print(len(customerize_ljust(s1,23,'*')))

8.自定义实现str.center(numbe)
center() 方法返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。如果指定的长度小于原字符串的长度则返回原字符串。

def customerize_center(s,lenth,fillchar=' '):
if len(s)>lenth:
return s
else:
result=''
front_period=int((lenth-len(s))/2)
end_period = lenth-front_period-len(s)
for i in range(lenth):
if i<front_period:
result+=fillchar
elif i>=front_period and i<lenth-end_period:
result+=s[i-front_period]
else:
result+=fillchar
return result
s2='aaa'
print(s2)
print(customerize_center(s2,7,'*'))

8.自定义实现zfill
Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0

def customerize_zfill(s,lenth):
if len(s)>lenth:
return s
else:
result=''
for i in range(lenth):
if i<lenth-len(s):
result+=str(0)
else:
result+=s[i-(lenth-len(s))]
return result
print(customerize_zfill(s2,10))

9.自定义find函数
Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1

def customerize_find(s,str,beg=None,end = None):
if beg == None:
beg = 0
if end ==None:
end = len(s)
for i in range(beg,end):
if s[i:i+len(str)]==str:
return i
else:
return -1
s3='lkadsacedsfhlkwheldsfsdfskadsface'
print(s3)
print(customerize_find(s3,'ace'))
print(customerize_find(s3,'ace',9))

10.自定义实现rfind
Python rfind() 返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1

def customerize_rfind(s,str,beg=None,end=None):
if beg == None:
beg = 0
if end ==None:
end = len(s)
for i in range(end,beg-1,-1):
if s[i-len(str):i]==str:
if i-len(str)>=beg:
return i-len(str)
else:
return -1
print(s3)
print(customerize_rfind(s3,'ace'))
print(customerize_rfind(s3,'ace',3,8))

20190112-自定义实现字符串的操作方法,如strip,upper,title,ljust,center,zfill,find,rfind等的更多相关文章

  1. python 字符串常用操作方法

    python 字符串常用操作方法 python 字符串操作常用操作,如字符串的替换.删除.截取.赋值.连接.比较.查找.分割等 1.去除空格 str.strip():删除字符串两边的指定字符,括号的写 ...

  2. python中字符串的操作方法

    python中字符串的操作方法大全 更新时间:2018年06月03日 10:08:51 作者:骏马金龙 我要评论这篇文章主要给大家介绍了关于python中字符串操作方法的相关资料,文中通过示例代码详细 ...

  3. 【C++实现python字符串函数库】strip、lstrip、rstrip方法

    [C++实现python字符串函数库]strip.lstrip.rstrip方法 这三个方法用于删除字符串首尾处指定的字符,默认删除空白符(包括'\n', '\r', '\t', ' '). s.st ...

  4. JaveScript基础(2)之数据类型转换和常用字符串的操作方法

    1.JaveScript数据类型转换: A.转字符串:通过"+"或toString(); PS:如果都是数值类型,'+'会进行求和运算,否则会做字符串连接: var s=2.5;d ...

  5. C++自定义String字符串类,支持子串搜索

    C++自定义String字符串类 实现了各种基本操作,包括重载+号实现String的拼接 findSubStr函数,也就是寻找目标串在String中的位置,用到了KMP字符串搜索算法. #includ ...

  6. day05数据类型,数字类型,字符串类型,字符串的操作方法,列表类型的操作方法,可变类型与不可变类型

    复习 ''' 流程控制 1.顺序结构.分支结构.循环结构 2.if分支结构 if 条件: 代码块 elif 条件: 代码块 else: 代码块 # 可以被if转换为False:0 | '' | Non ...

  7. Redis自定义动态字符串(sds)模块(一)

    Redis开发者在开发过程中没有使用系统的原始字符串,而是使用了自定义的sds字符串,这个模块的编写是在文件:sds.h和sds.c文件中.Redis自定义的这个字符串好像也不是很复杂,远不像ngin ...

  8. python字符串常用操作方法

    python字符串操作常用操作,如字符串的替换.删除.截取.复制.连接.比较.查找.分割等,需要的朋友可以参考下. 1.去除空格str.strip():删除字符串两边的指定字符,括号的写入指定字符,默 ...

  9. Mysql 自定义随机字符串

    前几天在开发一个系统,需要用到随机字符串,但是mysql的库函数有没有直接提供,就简单的利用现有的函数东拼西凑出随机字符串来.下面简单的说下实现当时. 1.简单粗暴. select ..., subs ...

随机推荐

  1. easyui datagrid行编辑中数据联动

    easyui的datagrid中行内编辑使用数据联动.即:当编辑产品编号时,该行的产品名称自动根据产品编号显示出来. 在编辑中获取当前行的索引 function getRowIndex(target) ...

  2. lua学习笔记之userdata

    这一段时间看了<programming in lua>中的第28章,看一遍并不是很难,但是只是朦胧的感觉,雾里看花,水中望月.最终还是决定敲出来自己看看,练练手,结果受益不少,也遇到了一些 ...

  3. with优化妙用

    --语法: /*with   alias_name1 as    (subquery1),  alias_name2 as    (subQuery2),  ……  alias_nameN as   ...

  4. C#中的"?"和"??"

    摘自:http://www.cnblogs.com/zxjyuan/archive/2009/10/27/1590795.html 如果你看到C#中的“?”问号脑袋里便充满问号,那么这个贴子便是为你而 ...

  5. 容器,Docker, Kubernetes和Kyma,以及Kyma对SAP的意义

    大家好,今天非常高兴能给大家做一个关于Kyma的技术分享.这个session的audience主要是针对使用咱们成都研究院使用Java和nodejs等技术栈做微服务开发的同事们.对于在ABAP net ...

  6. ClipboardJS 实现JS复制到剪切板

    根据官方文档的说法这个支持IE9+以及大部分主流浏览器,地址:https://clipboardjs.com/ 下面写个简单的例子:HTML:注意,这里最好是button,并非所有的元素都支持该JS ...

  7. 使用ant进行邮件发送,ant发送已存在的html文件

    Jenkins上使用发送邮件功能一直有问题,放弃Jenkins配置,使用ant的进行发送邮件,参考文档可以: https://www.jianshu.com/p/04cfce59890a 我这里是要发 ...

  8. Netty问题小结

    1.问题:高并发时连接不够:java.net.SocketException: No buffer space available (maximum connections reached?): co ...

  9. CentOS下go 安装

     go 语言源码安装依赖 ,gcc ,make glibc库,等,上述工具安装省略,另外,其源代码更新采用的是mercurial 工具,安装前先安装mercureal :   1.mercurial安 ...

  10. CF1063A Oh Those Palindromes

    嘟嘟嘟 只要将每一种字母放一块输出就行了. 证明1:比如 1 2 3 4 5 6,那么这个序列对答案的贡献分别是1和5,2和4 ,3和6……如果重新排列成x x x x o o,会发现对        ...