0

次のコードがあります

  string tString;
  int flNum;
  string flLeg;

  tString = "25664-A";

tString を flNum と flLeg の 2 つの変数に入れる必要があります。私の望む結果は - flNum = 25664 flLeg = A

私の試みは -

 flNum = Convert.ToInt32(tString.Substring(tString.IndexOf("-") - 1));
 flLeg = tString.Substring(tString.IndexOf("-") + 1, 1);

しかし、それは私にエラーを出します。希望する結果を得るためにこのコードを変更する方法について何か提案はありますか?

ご協力ありがとうございます。

4

3 に答える 3

4

string.Split() メソッドを使用するだけです。

string[] result = tString.Split('-')
int flNum = Convert.ToInt32(result[0]);
string flLeg = result[1];

コードでは、最初の部分文字列に対して開始点と長さを渡す必要があるため、エラーが発生します

flNum = Convert.ToInt32(tString.Substring(0, tString.IndexOf("-")));  

ダッシュの位置は正しく見つかりますが、この位置は開始点として部分文字列に渡されますが、渡された位置から始まる番号がないため、変換は失敗します。

(そして、長さの - 1 を削除します。これは 、位置ではなく長さであるためです)

于 2012-08-23T16:05:53.390 に答える
1
string[] parts = tString.Split('-');

flNum = int.Parse(parts[0]);
flLeg = parts[1];

tStringへの呼び出しの内容によっては、Int32.Parseがスローされる可能性があるFormatExceptionためInt32.TryParse、より適切なオプションである可能性があります。Parse簡潔にするためだけに使用します。

于 2012-08-23T16:05:53.310 に答える
0
string[] parts = tString.Split('-'); 

if (parts.Length == 2)
{
    flLeg = parts[1]; 
    if (int.TryParse(parts[0], out flNum )
    {
        //All good
    }
    else
    {
        //Handle problem
    }
}
else
{
   //Handle problem
}
于 2012-08-23T16:08:00.960 に答える