1

こんにちは私はスペースとフォームで区切られた文字列を分割し 1010 FirstName MidName LastName 、C#MVC4コントローラーで整数1010を使用したいこの文字列は非表示のフォーム要素からコントローラーに解析されます

 var str = "1010 Firstname Midname LastName";

            string[] parts = str.Split(' ');
            if (parts != null)
            {
                int idpart = parts[0];
            }

エラーが発生し、型文字列を暗黙的にintに変換できません。よろしくお願いします。

4

5 に答える 5

0
var str = "1010 Firstname Midname LastName";              
string[] parts = str.Split(' ');             
if (parts != null)             
{                 
    int idpart = Convert.ToInt32(parts[0]);
    string firstpart = parts[1];             
    string midpart = parts[2];
    string lastpart = parts[3];
} 
于 2012-10-04T00:17:14.647 に答える
0

Splitメソッドを使用します-区切り文字の配列を取り、文字列の配列を返します。

private static char[] splitArray = { ' ' };
string[] results = input.Split(splitArray);
于 2012-10-04T00:17:37.107 に答える
0

例外は、以下の行によって引き起こされています。

int idpart = parts[0];

parts[0] は文字列になり、それを int に直接割り当てることはできないためです。

次のように、文字列を int に解析するように指示する必要があります。

int idpart = int.Parse(parts[0]);

パーサーが整数に変換できる形式ではない文字列を渡すと、例外がスローされることに注意してください。そのため、何らかの形式の例外処理を配置するか、int.TryParse メソッドを使用する必要があります。

于 2012-10-04T00:30:19.650 に答える
0

文字列を単純に int にキャストすることはできません。int.Parse() を使用して明示的に変換する必要があります。

string str = "1010 FirstName MidName LastName";
var splits = str.Split(' ');
var number = int.Parse(splits[0]);
于 2012-10-04T00:30:23.900 に答える
0

ベストユース int.TryParse().. 例外はスローされません。

var str = "1010 Firstname Midname LastName";

            var splittedData = str.Split(' ');

            if (splittedData != null && splittedData.Length > 0)
            {
                int _number;

                if (!int.TryParse(splittedData[0], out _number))
                {
                    Console.WriteLine("Not a number");
                }
                else
                {
                    Console.WriteLine("Got this number - {0}", _number);
                }
            }

            Console.ReadLine();
于 2012-10-04T07:16:16.657 に答える