字串需要掌握的操作

2022-06-30 20:24:13 字數 4103 閱讀 3320

一、定義:在單引號、雙引號、三引號內包含一串字元

'''name = '姓名'

name = "姓名"

name = """姓名"""

'''二、型別轉換

# 列表轉換為str型別

name = [1,2,3]

print(type(str(name))) # 把列表轉換為str型別,並列印出型別

# 字典轉換為str型別

name =

print(type(str(name))) # dict轉換為str型別

# 元組轉換為str型別

res = (1,2,3)

print(type(str(res))) # tuple轉換為str

# 集合轉換為str型別

res =

print(type(str(res))) # set轉換為str

三、內建方法

# 按索引取值

str1 = "hello python"

print(str1[6]) # 正向取值,按照下標為6的索引取值(第乙個為0,依次向後數)

print(str1[-2]) # 反向取值,按照下標為-2的索引取值(最後乙個為-1,依次向前數)

# 注意:str只能按照索引取值,但是不能按照索引修改值

# 切片(顧頭不顧尾),[:]不寫下標表示從頭到尾全部取

str1 = "hello python"

print(str1[1:8]) # 取出下標為1到8的值

print(str1[0:8:2]) # 取出下標為0到8的值,按照步長為2取值

print(str1[-8:-1]) # 取出下標為-8到-1的值(最後乙個值的小標為-1)

print(str1[::-1]) # 倒著取值,從右到左取值,按照步長為1取值

# len():獲取字串的長度

str1 = "hello python"

print(len(str1))

# 成員運算:in 和 not in

str1 = "hello python"

print('hello' in str1) # 'hello' 是在str1中

print('hello' not in str1) # 'hello' 不在str1中

# split:切分,切分後以列表形式存

str1 = "hello python"

res = str1.split() # 預設以空格為切分

print(res) # 切分後是存為list型別

print(type(res))

str2 = "hello,python"

res2 = str2.split(',') # 括號內指定分隔字元,則按照括號內指定的分隔字元為切分

print(res2)

str3 = 'a,b,c,d,e'

res3 = str3.split(',',1) # 從左到右以逗號為分隔符,分隔1次

print(res3)

str4 = 'a,b,c,d,e'

res4 = str3.rsplit(',',1) # 從右到左以逗號為分隔符,分隔1次

print(res4)

# for迴圈str

str1 = "你好嗎"

for i in str1: # 迴圈字串:for迴圈字串是迴圈字串中的每個值

print(i)

# 移除指定字元

str1 = " name "

print(str1.strip()) # 預設移除字串左右兩邊空格

str2 = "***name****"

print(str2.strip("*")) # 移除字串左右兩邊指定字元

print(str2.lstrip('*')) # 移除字串左邊指定字元

print(str2.rstrip("*")) # 移除字串右邊指定字元

# 修改英文本串中的大小寫

str1 = 'my name is tony!'

print(str1.lower()) # 全部修改為小寫

print(str1.upper()) # 全部修改為大寫

print(str1.capitalize()) # 首字母大寫

print(str1.title())  # 每個英文單詞的首字母大寫

# 判斷字串中以什麼開頭和以什麼結尾

str1 = 'my name is tony!'

res = str1.startswith('my') # 判斷字串中的內容是否以my為開頭

print(res)

res1 = str1.endswith('y!') # 判斷字串中的內容是否以y!為結尾

print(res1)

# format():傳值方式

str = "my name is ,my age is ".format(name = '張三',age = '18') # 指定引數名傳值

print(str)

str1 = "my name is {},my age is {},my ad is {}".format('張三','19','sdfff') # 傳值按照{}對應傳值

print(str1)

str2 = "my name is ,my age is ".format('張三','19') #把format傳入的多個值當作乙個列表,然後用取值

print(str2)

# join:從可迭代物件中取出字串,然後按照指定分隔符進行拼接,拼接的結果也為字串

str1 = "hello"

print('%'.join(str1)) # 從字串中取出『hello』,然後以%號進行分隔符進行拼接

str2 = ['姓名','性別','年齡']

print('|'.join(str2)) # 從列表中取出字串,然後以|號作為分隔符進行拼接

# replace:修改字串中的值

str1 = "my name is 張三,my age is 18"

res = str1.replace('張三','李四') # 用新的字元替換字串中舊的字元,replace('舊值','新值')

print(res)

res1 = str1.replace('my','王五',1) # 替換字串中的值,可以指定修改個數(從第乙個開始算)

print(res1)

# isdigit:判斷字串是否是純數字組成

str1 = '1230'

res = str1.isdigit()

print(res)

# find 和 index :查詢字串中值的索引

str1 = ['姓名','性別','年齡','身高']

print(str1.index('年齡')) # 獲取列表中某個值的索引,index()可針對字串、列表、元組

str2 = "你現在過的好嗎"

print(str2.find('過')) # 獲取字串中某個值的索引,find()只能針對字串

# center:字串居中顯示,center(寬度,'指定字串左右兩邊符號')

str1 = 'name'

print(str1.center(20,'*')) # 顯示寬度為20個字元,字串居中顯示,左右兩邊以*號顯示

print(str1.ljust(20,'*')) # 顯示寬度為20個字元,字串居左顯示,字串右邊以*號顯示

print(str1.rjust(20,'*')) # 顯示寬度為20個字元,字串居右顯示,字串左邊以*號顯示

String字串需要掌握的幾個問題

一 兩種定義方式的區別 string str hello 先在堆記憶體中查詢是否已經有 hello 若有,將str指向已存在的它即可 若堆記憶體中沒有,則新建乙個 hello 物件,並賦給str。string str new string hello 不管堆記憶體中是否已經有 hello 直接新建乙...

字串匹配掌握了嗎?

字串匹配,也就是kmp演算法!這道題的出題人給予我們寬容,所以暴力也是可以解的 這道題目的標準解法應該是kmp,即時間複雜度為o n o n o n 空間複雜度為o m o m o m include bits stdc h using namespace std 設定最長的長度為256 const...

字串操作 靠字串分割字串

字串分解函式。注意strtok比較複雜。要妥善運用!也可以不用strtok函式,但要實現字串靠字串分割比較困難!注意str指向的空間必須是可讀可寫的 如陣列或動態分配的空間 不能為字串常量的指標,因為strtok改變了其中的內容。include include 功能 將str中的字串按照elemon...