拆分后保持空值

时间:2012-12-05 15:01:14

标签: c# split

我需要拆分可能有三种不同形式的输入值high/low120/50120//50120

我想把它分成两个不同的变量并检查我得到的值。

var high = input.Split('/').First();
var low = input.Split('/').Last();

if (high.Length > 0) //Do this
if (low.Length > 0) //Do that  

问题是,对于最后两个输入,我在highlow中获得了相同的值。这意味着我无法判断我是高价还是低价。

我开始怀疑我不能在这里使用拆分?

修改
似乎根本没有/的值。这些值应解释为high值。

3 个答案:

答案 0 :(得分:1)

您可以使用更安全的NullablesTryParse

string[] parts = input.Split('/');
int? high = null;
int? low = null;
int hightest, lowtest;
if(int.TryParse(parts[0], out hightest))
    high = hightest;
if(int.TryParse(parts[1], out lowtest))
    low = lowtest;

现在,您可以检查它们是否设置了HasValue属性,例如:

if(high.HasValue)
{
    int val = high.Value;
    // do something with it
}

答案 1 :(得分:0)

string[] values = input.Split('/');
if(values[0] != string.Empty)
 //do this
if(values[1] != string.Empty)
 //do that

答案 2 :(得分:0)

尝试

var values = input.Split(new []{'/'}, StringSplitOptions.None);

要确保它不会删除空条目,尽管我认为None是默认值。

修改

如果缺少定界符,您可以执行以下操作

string high;
string low;
var values = input.Split('/');
high = values[0];
if(input.Length == 2)
{
    low = values[1];
}

您可能还想检查分割返回的超过2个项目,以捕获其中包含多个/的任何输入。