是否有一个等同于C的atoi功能的.NET?

时间:2009-07-08 14:42:21

标签: .net atoi

如果我有一个字符串:

"26 things"

我想将其转换为26.我只想在字符串开头的整数。

如果我使用C,我只使用atoi功能。但我似乎无法在.NET中找到任何相同的内容。

从字符串开头获取整数的最简单方法是什么?

编辑:对不起,我很暧昧。在字符串中查找空格字符的答案将在许多情况下起作用(甚至可能是我的)。我希望在.NET中使用atoi。答案也应该使用像“26things”这样的字符串。感谢。

10 个答案:

答案 0 :(得分:14)

这看起来很漂亮:

string str = "26 things";
int x = int.Parse(str.TakeWhile(ch => char.IsDigit(ch)).Aggregate("", (s, ch) => s + ch));

对于任何真正想要atoi的人来说,这是一个无聊的解决方案:

[System.Runtime.InteropServices.DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern int atoi(string str);

答案 1 :(得分:10)

这应该有效(编辑后忽略字符串开头的空白区域)

int i = int.Parse(Regex.Match("26 things", @"^\s*(\d+)").Groups[1].Value);

如果您担心检查是否有值,如果在字符串的开头没有整数,您可以执行以下操作以给出-1值。

Match oMatch = Regex.Match("26 things", @"^\s*(\d+)");
int i = oMatch.Success ? int.Parse(oMatch.Groups[1].Value) : -1;

答案 2 :(得分:2)

您可以使用Int32.Parse(stringVal.Substring(0, stringVal.indexOf(" "))

答案 3 :(得分:1)

一种方式是

string sample = "26 things";
int x = int.Parse(sample.Substring(0, sample.IndexOf(" ")));

答案 4 :(得分:0)

直接等价物是int.Parse(字符串),但我不完全确定这是否只需要起始编号。

答案 5 :(得分:0)

您可以在Microsoft.VisualBasic.Conversion命名空间中调用Val。在您的方案中,它应该打印“26”。我不知道它是否在toher场景中100%兼容。这是规范的链接。

http://msdn.microsoft.com/en-us/library/k7beh1x9%28VS.71%29.aspx

答案 6 :(得分:0)

如果您只想要整数

public String GetNumber (String input)
{
    String result = "";
    for (Int32 i = 0; i < input.Length; i++)
    {
        if (Char.IsNumber(input[i]))
        {
            result += input[i];
        }
        else break;
    }
    return result;
}

答案 7 :(得分:-1)

试试这个:

int i = int.Parse("26 things".Split(new Char[] {' '})[0]);

答案 8 :(得分:-2)

我能想到这样的事情:

    public static string Filter(string input, string validChars) {
        int i;
        string result = "";
        for (i = 0; i < input.Length; i++) {
            if (validChars.IndexOf(input.Substring(i, 1)) >= 0) {
                result += input.Substring(i, 1);
            } else break;
        }
        return result ;
    }

并称之为:

Filter("26 things", "0123456789");

答案 9 :(得分:-2)

你必须拆分字符串,然后解析它:

var str = "26 things";
var count = int.Parse(str.Split(' ')[0]);