4

次のような文字列がある場合:

"26 things"

26に変換したい。文字列の先頭に整数が欲しいだけだ。

Cを使用している場合は、atoi関数を使用します。しかし、.NETで同等のものを見つけることができないようです。

文字列の先頭から整数を取得する最も簡単な方法は何ですか?

編集:あいまいでした。ごめんなさい。文字列内のスペース文字を探す答えは、多くの状況で機能します(おそらく私の場合でも)。.NETでatoiに相当するものを期待していました。答えは「26things」のような文字列でも機能するはずです。ありがとう。

4

10 に答える 10

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);
于 2009-07-08T14:50:22.467 に答える
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;
于 2009-07-08T14:48:41.813 に答える
2

あなたが使うことができますInt32.Parse(stringVal.Substring(0, stringVal.indexOf(" "))

于 2009-07-08T14:48:20.300 に答える
1

片道は

string sample = "26 things";
int x = int.Parse(sample.Substring(0, sample.IndexOf(" ")));
于 2009-07-08T14:49:11.017 に答える
0

Microsoft.VisualBasic.Conversion名前空間でValを呼び出すことができます。シナリオでは、「26」を出力する必要があります。しかし、それが他のシナリオで100%互換性があるかどうかはわかりません。仕様へのリンクは次のとおりです。

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

于 2009-07-08T14:58:48.927 に答える
0

直接同等のものはint.Parse(string)ですが、それが開始番号だけを取るかどうかは完全にはわかりません。

于 2009-07-08T14:46:15.530 に答える
-1

これを試して:

int i = int.Parse("26 things".Split(new Char[] {' '})[0]);
于 2009-07-08T14:53:28.637 に答える
-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");
于 2009-07-08T14:47:50.847 に答える
-2

文字列を分割してから解析する必要があります。

var str = "26 things";
var count = int.Parse(str.Split(' ')[0]);
于 2009-07-08T14:49:23.107 に答える