Swfit字符串转整数

使用场景

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231,  231 − 1]。如果数值超过可表示的范围,则返回  INT_MAX (231 − 1) 或 INT_MIN (−231) 。

代码实现

funcmyAtoi(_str:String) ->Int{

        var newStr =String() //记录数字字符串

        for i in 0..

            let startIndex = str.index(str.startIndex, offsetBy: i) 

            let endIndex = str.index(str.startIndex, offsetBy: i+1)

            let char = str[startIndex..

           //char.utf8.first! 。。。将字符转成ASCII码值

            if(char.utf8.first! ==32){   //空格对应的ASCII码值

                if(newStr.count<1){  //当空格是第一个字符时,直接进行下一次循环

                   continue

                }else{//当空格不是第一个字符时,结束for循环

                   break

                }

            }else if(char.utf8.first!  > 47 && char.utf8.first! < 58){ //判断字符是否为0-9的数字

                newStr = newStr + char

            }elseif(char.utf8.first! == 43|| char.utf8.first! ==45) && newStr.count < 1{

               //当字符是"+"或"-"时,且newStr为空才将"+"或"-"加入newStr中

                newStr = newStr + char

            }else{ 

                break

            }


        }

      //去除头尾空格

        newStr = newStr.trimmingCharacters(in: .whitespacesAndNewlines)

        ifnewStr.count<1|| newStr =="-"|| newStr =="+"{

            return 0

        }

     //处理数字字符串转Int溢出的情况

        guard Int(newStr) !=nil else{

            letoneStr =  newStr[str.index(str.startIndex, offsetBy:0)..

            ifoneStr =="-"{

                returnInt(Int32.min)

            }

            return Int(INT32_MAX)

        }

        if Int(newStr)! < Int32.min

            return Int(Int32.min)

        }else if Int(newStr)!  > Int32.max{

            return Int(Int32.max)

        }

        return Int(newStr)!

    }

注:这是LeetCode的题目,大家有兴趣可以去看原题。入口

你可能感兴趣的:(Swfit字符串转整数)