C#中Java子串的等价物是什么?

rtu*_*ner 4 c# substring

当我想substring在Java中查找字符串中的文本区域时,我提供了两个索引,一个用于start,一个用于end,但在C#中,我被迫提供substring作为参数的长度,但是这个如果我不知道我应该停在哪里会成为一个问题,导致我有这样的事情:

verse[i].Substring(verse[i].IndexOf("start"), (verse[i].IndexOf("end") - verse[i].IndexOf("start"));
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

verse[i].Substring(verse[i].IndexOf("start"), (verse[i].IndexOf("end"));
Run Code Online (Sandbox Code Playgroud)

令人讨厌的是,我一遍又一遍地遇到这个问题,我想知道我是唯一一个还是有一个我不知道的技巧.你最好怎么解决这个问题?(考虑到清洁度和速度)

ps:我不喜欢为几乎所有东西创建变量.谢谢

L.B*_*L.B 9

您可以像这样编写自己的扩展方法

var newstr = str.MySubString(start,end);
Run Code Online (Sandbox Code Playgroud)

..

public static partial class MyExtensions
{
    public static string MySubString(this string s,int start,int end)
    {
        return s.Substring(start, end - start + 1);
    }
}
Run Code Online (Sandbox Code Playgroud)


nig*_*ade 6

你接受的答案是错误的,因为你说错了.

在java中,当你调用substring(START,END)时,你会得到一个从START开始到END - 1结束的子字符串.

在c#你只需要打电话:

Substring(START, END - START);
Run Code Online (Sandbox Code Playgroud)

如果您按建议添加1,您将获得不同的字符串.