我有以下代码
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);
但是我错了。有关如何更改此代码以获得所需结果的任何建议吗?
谢谢你的帮助。
答案 0 :(得分: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的长度,因为这是......好吧长度不是位置)
答案 1 :(得分:1)
string[] parts = tString.Split('-');
flNum = int.Parse(parts[0]);
flLeg = parts[1];
根据tString
的内容,对Int32.Parse
的调用可能会引发FormatException
,因此Int32.TryParse
可能是更好的选择。为简洁起见,我只使用Parse
。
答案 2 :(得分: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
}