有趣的字串操作

2022-05-03 07:09:10 字數 2824 閱讀 8694

字串的讀取採用下標引數,定義如下:

str【start:end:step】

注意:字串下標採用左開右閉的原則,也就是說取的字串是start~(end-1)

1、正常引數的例子

1 >>> str="

hello world

"2 >>>str[0:]3'

hello world

'4 >>> str[6:10]5'

worl

'6 >>> str[:5]7'

hello

'8 >>> str[0:10:2]9'

hlowr

'

2、如果序列的機尾處超過了原字串的最後乙個索引位置,則採用負數索引。-1指的是最後乙個索引位置,-2為倒數第二個位置字元h

ello

worl

d索引01

2345

6789

10-11

-10-9

-8-7

-6-5

-4-3

-2-1

1 >>> str[3:-2]2'

lo wor

'3 >>> str[-1]4'

d'5 >>> str[-5:-1]6'

worl

'

3、步長引數預設值為1,當用-1作為步長,意味著從後往前進行

1 >>> str[::2]2'

hlowrd

'3 >>> str[::3]4'

hlwl

'5 >>> str[::-1]6'

dlrow olleh

'7 >>> str[::-2]8'

drwolh

'

4、在數字字串上使用步長,能得到有趣的結果。不同步長和不同起始值,能得到奇數、偶數或者保留數字

1 >>> digits="

0123456789

"2 >>> digits[::2]3'

02468

' #偶數

4 >>> digits[1::2]5'

13579

' #奇數

6 >>> digits[::-1]7'

9876543210

' #反轉

8 >>> digits[::-2]9'

97531

' #反轉後的奇數

10 >>> digits[-2::-2]11'

86420

' #反轉後的偶數

可以總結一句規律,step 為正表示從左到右切片,反之為右到左。然後根據index依次切片

1 >>> a=list(i for i in range(1,11))

2 >>>a

3 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

4 >>>

5 >>> a[8:3:-1]

6 [9, 8, 7, 6, 5] #

右->左切片,step 為1,a[8]=9, a[7]=8, ... a[4]=5, 8-3=5個

7 >>>

8 >>> a[10:0:-2]

9 [10, 8, 6, 4, 2] #

右->左切片, 切片的時候,不存在 index 越界情況,a[10]不存在,a[9]=10, a[7]=8, a[5]=6...

10 >>>

11 >>> a[0:10:-2] #

start < end step 為負, 方向為右->左,第乙個是 a[0], a[0]的左邊就再也沒有值了。為空12

13 >>>

14 >>> a[::-2] #

a[:]表示取所有,step 為負就反方向從右往左取

15 [10, 8, 6, 4, 2]

16 >>>

17 >>> a[5::-2] #

右->左,等價於 a[5:0:-2] a[5]=6, a[3]=4, a[1]=2

18 [6, 4, 2]

19 >>>

20 >>> a[:5:-2] #

右->左, 等價於 a[9:5:-2] a[9]=10, a[7]=8

21 [10, 8]

【擴充套件】

python strip() 方法用於移除字串頭尾指定的字元(預設為空格或換行符)或字串行。

注意:該方法只能刪除開頭或是結尾的字元,不能刪除中間部分的字元。

1 str1 = "

00000003210runoob01230000000"2

print(str1.strip('

0')) #

去除首尾字元 0

3 str2 = "

, this.

"4 str3 = "

this,,. "5

print(str2.strip('

., '))6

print(str3.strip('

., '))

結果為:

1

'3210runoob0123'2

'this'3

'this

'

ps1:

lstrip()、rstrip()和strip()類似,只是僅針對字串開頭和結尾

ps2:

一次性返回字串的索引和值的函式:enumerate()

字串操作 靠字串分割字串

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

字串的操作

strcpy,sprintf,memcpy的區別 對於字串拷貝來說,其實現的效率和使用的方便程度不同 strcpy 無疑是最合適的選擇 效率高且呼叫方便。snprintf 要額外指定格式符並且進行格式轉化,麻煩且效率不高。memcpy 雖然高效,但是需要額外提供拷貝的記憶體長度這一引數,易錯且使用不...

字串的操作

pragma once define string h include include using namespace std define maxsize 255 typedef struct sstring void initstring sstring s 給字串賦值 void strassi...