1. 程式人生 > >[Swift]庫函式atoi:將字串內容轉換為整數

[Swift]庫函式atoi:將字串內容轉換為整數

1、如果第一個非空格字元存在,是數字或者正負號則開始做型別轉換,之後檢測到非數字(包括結束符 \0) 字元時停止轉換,返回Int32整形數。否則,返回0。

1 //返回Int32位整形
2 print(atoi("123456"))
3 //Print 123456
4 print(atoi("-123456"))
5 //Print -123456
6 print(atoi("1234567\089"))
7 //Print 1234567
8 print(atoi("strengthen"))
9 //Print 0

2、在找到第一個非空字元之前,需要移除掉字串中的空格字元。

(1)如果第一個非空字元是正號或負號,選取該符號,並將其與後面儘可能多的連續的數字組合起來,這部分字元即為整數的值。

(2)如果第一個非空字元是數字,則直接將其與之後連續的數字字元組合起來,形成整數。

1 print(atoi("    -123456"))
2 //Print -123456
3 //注意此情況返回0
4 print(atoi("  -   123456"))
5 //Print 0
6 //截止轉換字元 '6' ,其下一個字元不為數字。
7 print(atoi("    -123456abcd"))
8 //Print -123456

3、字串可以在形成整數的字元後面包括多餘的字元,這些字元可以被忽略,它們對於函式沒有影響。

1 print(atoi(" 123456 abcd
")) 2 //Print 123456

4、當字串中的第一個非空字元序列不是個有效的整數;或字串為空;或字串僅包含空白字元時,則不進行轉換。若函式不能執行有效的轉換,返回 0。

1 print(atoi("strengthen"))
2 //Print 0

5、32 位有符號整數,其數值範圍是 [−2^31, 2^31 − 1]。如果數值超過可表示的範圍,則轉換數值會不正確。

1 //超過Int32所表示的整數範圍。 2^31=2147483648
2 print(atoi("2147483647"))
3 //Print 2147483647
4 print(atoi("
2147483648")) 5 //Print -2147483648 6 print(atoi("2187483649")) 7 //Print -2107483647