-1

ある本のチュートリアルに従っていますが、理解できない小さなコードがあります。コードは次のとおりです。

// conv_ex.cs - Exercise 12.4
// This listing will cut the front of the string
// off when it finds a space, comma, or period.
// Letters and other characters will still cause
// bad data.
//-----------------------------------------------
using System;
using System.Text;

class myApp
{
    public static void Main()
    {
        string buff;
        int age;
        // The following sets up an array of characters used 
        // to find a break for the Split method. 
        char[] delim = new char[] { ' ', ',', '.' };
        // The following is an array of strings that will
        // be used to hold the split strings returned from
        // the split method.
        string[] nbuff = new string[4];

        Console.Write("Enter your age: ");

        buff = Console.ReadLine();

        // break string up if it is in multiple pieces.
        // Exception handling not added

        nbuff = buff.Split(delim,2); //<----- what is purpose of (delim,2) in this case?
        //nbuff = buff.Split(delim); // will give the same result
        //nbuff = buff.Split(delim,3); //will give the same result


        // Now convert....

        try
        {
            age = Convert.ToInt32(nbuff[0]);
            Console.WriteLine("age is:" + age);

            if (age < 21)
                Console.WriteLine("You are under 21.");
            else
                Console.Write("You are 21 or older.");
        }
        catch (ArgumentException e)
        {
            Console.WriteLine("No value was entered... (equal to null)");
        }
        catch (OverflowException e)
        {
            Console.WriteLine("You entered a number that is too big or too small.");
        }
        catch (FormatException e)
        {
            Console.WriteLine("You didn't enter a valid number.");
        }
        catch (Exception e)
        {
            Console.WriteLine("Something went wrong with the conversion.");
            throw (e);
        }
    }
}

私の質問は:

の「 2」の目的は何nbuff = buff.Split(delim,2);ですか?

とにかく、文字列は 2 つに分割されますよね?

のような「 2」がなくてもnbuff = buff.Split(delim);結果は同じになります。

4

4 に答える 4

2

返される部分文字列の最大数です。これを に変更し3ても効果がない理由は、返される部分文字列が 3 つ未満であるため、設計上、使用可能なすべての部分文字列が返されるためです。たとえば、返される可能性のある部分文字列があった場合、最初の部分のみが返されます。53

String.Split()メソッドの詳細については、こちらをご覧ください。

于 2013-03-08T17:04:34.687 に答える
2

2 は、返される文字列の最大数を示します。

詳細については、こちらを参照してください。

パラメータはcountと呼ばれます。関連するテキストは次のとおりです。

このインスタンスに countを超える部分文字列がある場合、最初のcountから 1 を引いた部分文字列が戻り値の最初のcountから 1 を引いた要素に返され、このインスタンスの残りの文字が戻り値の最後の要素に返されます。

于 2013-03-08T17:05:48.737 に答える
1

2inは、返される部分文字列のbuff.Split(delim,2)最大数を指定します。たとえば、 で定義された文字で区切られた文字列に 4 つの部分がある場合delim、違いに気付くでしょう。を使用した場合Split(delim,2)、2 つの部分文字列のみが返されます。

MSDN でもこのページを読むことができます。

于 2013-03-08T17:05:06.987 に答える