我有3种可能的输入案例
string input = ""; // expected result: ""
string input = "bar-foo"; // expected result: "foo"
string input = "foo"; // expected result: "foo"
我必须删除所有内容,包括第一个分隔符char -
(如果存在)。
工作方法:
string output = input.Split('-').LastOrDefault();
我想在没有Split()
的情况下解决这个问题 - 我的工作方法是:
string output = input.Substring(input.IndexOf('-') );
如何处理IndexOutOfRangeException
/使此代码生效?
答案 0 :(得分:7)
尝试添加1
:
string output = input.Substring(input.LastIndexOf('-') + 1);
如果-
中没有input
,LastIndexOf
会返回-1
,那么您将拥有整个字符串
我认为您正在寻找input
后缀,这就是我放LastIndexOf
的原因:
"123-456-789" -> "789"
如果您想切断前缀:
"123-456-789" -> "456-789"
请将LastIndexOf
更改为IndexOf
答案 1 :(得分:1)
我认为您应该使用Contains
方法识别 - 是否可用。
string a = "";
if (a.Contains("-"))
{
string output = input.Substring(input.LastIndexOf('-') + 1);
}
答案 2 :(得分:-1)
为什么不直接从字符串中删除它而不检查:
input = input.Replace("-foo", string.Empty);