我需要拆分可能有三种不同形式的输入值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
值。
答案 0 :(得分:1)
您可以使用更安全的Nullables
和TryParse
:
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个项目,以捕获其中包含多个/
的任何输入。