在C#中将字符串分成多个项目

时间:2012-08-23 16:03:29

标签: c# .net visual-studio-2010

我有以下代码

  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);

但是我错了。有关如何更改此代码以获得所需结果的任何建议吗?

谢谢你的帮助。

3 个答案:

答案 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
}