字符串转整数(C#)

王朝学院·作者佚名  2016-05-17
窄屏简体版  字體: 小  |  中  |  大  |  超大  

字符串转整数(C#) using System;using System.Collections.Generic;namespace StrToInt_CS{ class PRogram { static void Main(string[] args) { string str = ""; while (!String.IsNullOrEmpty(str = Console.ReadLine())) { KeyValuePair<int, bool> ret = Program.StrToInt(str); if (ret.Value) { Console.WriteLine("Number for {0} is {1}", str, ret.Key); } else { Console.WriteLine("The input {0} is invalid", str); } } } public static KeyValuePair<int, bool> StrToInt(string s) { bool isMinus = false; bool isValid = false; int num = 0; int k = 0; // if contain leading space, then invalid if (s[k] == ' ') { new KeyValuePair<int, bool>(num, isValid); } // if contain Operator if (s[k] == '-') { isMinus = true; k++; } if (k < s.Length && s[k] == '+') { isMinus = false; k++; } int flag = isMinus ? -1 : 1; for (int i = k; i < s.Length; i++) { if (s[i] >= '0' && s[i] <= '9') { try { // check number is not overflow checked { num = num * 10 + flag * (s[i] - '0'); } } catch (Exception) { isValid = false; break; } } else { break; } // if complete traverse the whole string, then is valid if (i + 1 == s.Length) { isValid = true; } } return new KeyValuePair<int,bool>( num, isValid); } }}

Test cases:

null The input null is invalid "" The input "" is invalid " " The input " " is invalid

The input    is invalid 123 Number for 123 is 123 +123 Number for +123 is 123 -123 Number for -123 is -123 1a3333 The input 1a3333 is invalid +0 Number for +0 is 0 -0 Number for -0 is 0 2147483647 Number for 2147483647 is 2147483647 2147483648 The input 2147483648 is invalid -2147483648 Number for -2147483648 is -2147483648 -2147483649 The input -2147483649 is invalid + The input + is invalid - The input - is invalid ++ The input ++ is invalid __ The input __ is invalid -- The input -- is invalid

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航