字符串转整数(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

字符串转整数(C#)

时间: 2024-11-10 18:11:17

字符串转整数(C#)的相关文章

编程算法 - 把字符串转换为整数 代码(C)

把字符串转换为整数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数StrToInt, 模拟atoi的功能, 把字符串转换为整数. 须要考虑异常处理, 正负数, 还有Int的最大值(0x7FFFFFFF)和最小值(0x80000000)等情况. 代码: /* * main.cpp * * Created on: 2014.7.12 * Author: spike */ #include <stdio.h> #include &l

c程序十六进制字符串转换为整数与反转

字符串转整数使用sscanf int value = 0; char *buf = "1d5ce"; sscanf (buf, "%x", &value); printf ("Hex value is:%x\n", value); 整数转字符串使用sprintf int num = 0; char buf[10] = {}; num = 120270; sprintf (buf, "%x", num); //打印 bu

【LintCode】转换字符串到整数

问题描述: 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数. 样例 "10" =>10 "-1" => -1 "123123123123123" => 2147483647 "1.0" => 1 问题分析: 这道题特别恶心,虽然思路很

字符串转换为整数”123“-&amp;gt;123

字符串转换为整数"123"->123 题目描写叙述: 输入一个由数字组成的字符串.把它转换成整数并输出. 比如:输入字符串"123".输出整数123. 给定函数原型 int StrToInt(const char *str) .实现字符串转换成整数的功能.不能使用库函数atoi. 题目分析: 将字符串正确转化为整数步骤 ①当扫描第一个字符'1'时候,因为为第一位.所以直接得到数字1 ②当扫描第二个字符'2'时候,1*10+2 = 12 ③继续扫描字符'3'时候

字符串转换为整数”123“-&gt;123

字符串转换为整数"123"->123 题目描述: 输入一个由数字组成的字符串,把它转换成整数并输出.例如:输入字符串"123",输出整数123. 给定函数原型 int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi. 题目分析: 将字符串正确转化为整数步骤 ①当扫描第一个字符'1'时候,由于为第一位,所以直接得到数字1 ②当扫描第二个字符'2'时候,1*10+2 = 12 ③继续扫描字符'3'时候,12

【剑指offer】字符串转整数

转载请注明出处:http://blog.csdn.net/ns_code/article/details/28015693 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=10000000). 输出: 对应每个测试案例,若输入为一个合法的字符串(即代表一个整数),则输出这个整数.若输入为一个非法的字符串,则输出"My God". 样

[LeetCode] String to Integer (atoi) 字符串转为整数

Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases. Notes: It is intended for this problem to be spe

转换字符串到整数

转换字符串到整数 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数. 样例 "10" =>10 "-1" => -1 "123123123123123" => 2147483647 "1.0" => 1 标签 字符串处理 基本实现 优步

关于将一个字符串转换为整数的问题

当我看到这么一个问题时,我觉得是一个很简单的问题,立刻就会想到用一个while循环遍历整个字符串,将一个个字符转化为数字,关于这种问题已经不是第一次遇到了,所以自信满满的写好然后去网上寻找答案. 这或许就是理想和现实的差距,把自己写的程序和标准答案一对,发现没有一个地方可以称之为写对.答案中提到了atoi函数,是一个把字符串转换为整数的库函数. 下面就是具体的实现: long long StrToIntCode(const char *ptr, bool minus) {     long lo

c++实现atoi()和itoa()函数(字符串和整数转化)

  c++实现atoi()和itoa()函数(字符串和整数转化) 一:起因 (1)字符串类型转化为整数型(Integer),还是字符串类型(String)转化为Double类型,这在java里面有非常好的内部函数,很easy的事情: (2)但是在c里面没有Integer Double等包装类,由char[]数组转化为整数型就变得不那么简单了,atoi()  itoa()在widows下面有,但是网上说linux 下好像没有 itoa() 函数,用 sprintf() 好了,但是本人测试了一下sp