1

我需要拆分high/low可能以三种不同形式出现的输入值:120/50, 120/, /50, 120.

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

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

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

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

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

编辑
似乎根本没有值/。这些值应该被解释为high值。

4

3 回答 3

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
}
于 2012-12-05T15:10:57.520 回答
0
string[] values = input.Split('/');
if(values[0] != string.Empty)
 //do this
if(values[1] != string.Empty)
 //do that
于 2012-12-05T15:07:18.543 回答
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];
}

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

于 2012-12-05T15:23:04.540 回答