如果存在则删除子字符串

时间:2018-06-18 09:24:42

标签: c# string substring

我有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 /使此代码生效?

3 个答案:

答案 0 :(得分:7)

尝试添加1

string output = input.Substring(input.LastIndexOf('-') + 1);

如果-中没有inputLastIndexOf会返回-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);