如果存在则删除子字符串

Dr.*_*ail 1 c# string substring

我有3个可能的输入案例

string input = "";        // expected result: ""
string input = "bar-foo"; // expected result: "foo"
string input = "foo";     // expected result: "foo"
Run Code Online (Sandbox Code Playgroud)

我必须删除包括第一个分隔符char的所有内容(- 如果存在).

工作方式:

string output = input.Split('-').LastOrDefault();
Run Code Online (Sandbox Code Playgroud)

我想解决这个问题Split()- 我的工作方法是:

string output = input.Substring(input.IndexOf('-') );
Run Code Online (Sandbox Code Playgroud)

如何处理IndexOutOfRangeException/使此代码工作?

Dmi*_*nko 7

尝试添加1:

string output = input.Substring(input.LastIndexOf('-') + 1);
Run Code Online (Sandbox Code Playgroud)

如果没有-input,LastIndexOf收益-1和所以你必须在整个字符串.

我假定你正在寻找input后缀,这就是为什么我已经把LastIndexOf:

"123-456-789" -> "789"
Run Code Online (Sandbox Code Playgroud)

如果你想切断前缀:

"123-456-789" -> "456-789"
Run Code Online (Sandbox Code Playgroud)

拜托, LastIndexOf换成IndexOf

  • 要删除分隔符(如果可用),无论如何都需要+ 1,因此这解决了这两个问题 (3认同)