'''字元串的方法
s.index() s.rindex()
s.find() s.rfind()
s.count()
s.replace()
s.partition() s.rpartition()
s.split() s.rsplit() s.splitlines()
s.join()
s.strip() s.lstrip() s.rstrip()
s.lower() s.upper() s.capitalize() s.title()
s.swapcase()
s.center() s.ljust() s.rjust() s.zfill()
s.startswith() s.endswith()
s.isdigit() s.isalpha() s.istitle() s.isalnum()
s.isspace() s.isupper() s.islower() s.isnumeric()
s.isdecimal() s.isidentifier()
s.isprintable()
s.format()
s.encode()
s.translate()
s.expandtabs()
s.maketrans()
'''
# 建立
s = 'asddd'
print(s)
s1 = str('Hello World!')
print(1, s1)
print(s.count('d')) # 傳回給定字元串在監測字元串中的個數
# 修改 # 字元串沒法修改,要做改變然後指派給别的變量,使用别的變量才行
s2 = s1[2]
print(2, s2)
s3 = s1.replace('l', 'L', 2) # replace(舊字元串,新字元串,替換次數)新的替換舊的,
print(3, s3) # 隻能填寫字元串,就是帶' '的,長度不限
s4 = s1.replace('q', 'Q', 2) # 沒找到舊的字元串則不替換
print(4, s4)
# 切片
s5 = s1[::] # str[開始位置:結束為止(不包括):步長]
print(5, s5) # 從開始位置(0)開始截取字元串,預設步長為1且截取全部
s6 = s1[::-1] # 負數的意思是倒着,步長為負則倒着打,是以開始位置應該在結束位置後面,例如[5:1]
print(6, s6) # 負幾代表倒數第幾個位置
# 增加
# 可以直接用+号實作字元串之間的連接配接
print(s1+'hello')
s7 = s1.zfill(15) # zfill(int)填寫int類型,表示用0來填夠這個int長度的字元串
print(7, s7)
s8 = s1.ljust(15, '0') # ljust(width(int),str)左對齊,并用str字元串來填充,使這個字元串長度夠指定的int
print(8, s8)
s9 = s1.rjust(15, '0') # 同上方法隻是右對齊,center(width(int),shr)為居中顯示,左右填充
print(9, s9)
s10 = s9.lstrip('0') # lstrip(str),删除字元串左邊給定的str字元
s11 = ' p'.lstrip() # rstrip(str)為删除右邊str字元串,strip為删除兩邊給定字元串
print(10, s10) # 預設為清除空格
print(11, s11)
# 删除
del s11 # del删除,有兩種寫法,del(要删除的東西)或者 del 要删除的東西
## print(12, s11)
# 操作
print(s1.capitalize()) # 把字元串第一個字母變成大寫字母,其他符号有大寫則變成小寫
print(s1.title()) # 把遇到的詞彙的第一個字母都變成大寫,其它字母全變為小寫
s12 = s1.upper() # 字母全部變成大寫的
print(13, s12)
s13 = s1.lower() # 字母全部變成小寫的
print(14, s13)
s14 = s1.swapcase() # 字母的大小寫互換
print(15, s14)
s15 = ' '.join(s1) #a.join(b) 把a字元串放入a字元串的每個字元之間
print(16, s15)
n1 = s1.find('Wo', 0, len(s1)) # find(str, start, end)
print(n1) # 查找字元串str,在區間start和end之間
n2 = s1.find('WO', 0, len(s1)) # 找到了則傳回找到時(從左到右)第一個位置的下标
print(n2) # 沒找到則傳回-1
n3 = s1.index('Wo', 0, len(s1)) # index(str, start, end)
print(n3) # 查找字元串str,在區間start和end之間
## n4 = s1.index('WO', 0, len(s1)) # 找到了的方法同上,不過沒找到的時候不傳回-1,要報錯
## print(n4)
l1 = s1.split(' ', 1) # split(str, int)
print(l1) # 用給定字元串str(原串存在)把字元串分割成清單,預設為空格
l2 = s1.splitlines() # 原串不存在給定str是,不分割,直接變為清單
print(l2) # int給定分割次數,splitlines這個方法無參數
# splitlines以換行分割字元串為清單
s16 = s1.partition(' ') # partition(str)用給定字元串(原串中有)把字元串分為三個部分,放入元組裡
print(17, s16) # 例如hello world!--->('hello',' ','world!')
# 還有rfind,rindex,rsplit,rpartition方法同上,隻是方向是從右往左找
s17 = s1.startswith('ll', 2, 4) # 給定範圍,開始的字元串與給定的字元串相等則傳回真,否則傳回假
print(18, s17)
s18 = s1.endswith('or', -5, -3) # 同上,隻是變成了結尾的字元串
print(19, s18)
print(20, s1.isalpha()) # 判斷是否是由全字母組成的字元串,bool型
print(21, s1.isalnum()) # 傳回是否是字母或者數字組成的字元串,bool型
print(22, s1.isdigit()) # 傳回是否是由數字組成的字元串,bool型
print(23, s1.isspace()) # 傳回是否是由空格組成的字元串,bool型
# 還有一些is開頭的判斷字元串的,見名思意,均為判斷的bool型
print(list(enumerate(s1)))
for i in enumerate(s1): # 轉換枚舉型,每個字元對應相應的序号(下标),組成元組
print(i, end=' ')
print()
for i, y in enumerate(s1): # 拆分枚舉元組中序号(下标)和字元串中對應的字元
print(i, end=' ')
print(y)