0

我有以下代码

  string tString;
  int flNum;
  string flLeg;

  tString = "25664-A";

我需要将 tString 放入两个变量 flNum 和 flLeg。我想要的结果是 - 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("-")));  

您正确找到了破折号的位置,但是该位置作为起点传递给子字符串,但是从传递的 pos 开始没有数字,因此转换失败。

(并删除 - 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 回答