String.Substring解释

时间:2013-11-08 12:42:24

标签: c# string substring

在我的程序中,我有一个通过另一个程序发送的长字符串。这个字符串大约有100个字符,我只需要它的一小部分。为此,我们将说我发送的字符串如下:

  

你好,我是一个测试字符串。我非常漫长,充满了你不想要的东西。

所以,为了剪切字符串,我只得到我需要的部分,我使用了以下字符串方法:

String.Substring(startPoint, Endpoint)

现在我的程序中我知道我需要使用的字符串位从一开始只有38个字符,长度只有36个字符。因此我的电话看起来像这样:

 String.Substring(38, 36)

我的程序很乐意从上面的例子中读到test string

在构建程序时,这不会显示任何问题或错误。但是当我运行它时,计算机抱怨终点不能低于起点。然而,事情是我想要的消息的一部分,被发送。

我已尝试修改我的通话,以便它看起来与此类似:

String.Substring(startPoint, startPoint + 36)

但这已经归还了一堆我不需要或不想要的额外角色。

现在我在这个方法背后的想法是它的工作方式是取我的初始点,从字符串开头的第38个字符,然后从第38个字符开始36个字符。我的想法背后的方法是如何工作的?

为什么这台计算机会抱怨某个问题,但是那样做了我想要的呢?

5 个答案:

答案 0 :(得分:3)

你一直在说“端点”,但它是字符串长度。你的工作方式是正确的。我不确定你为什么会收到警告。以下是该方法的信息。

http://msdn.microsoft.com/en-us/library/system.string.substring.aspx

警告来自插件吗?

答案 1 :(得分:2)

来自String.Substring Method (Int32, Int32)

  

从此实例中检索子字符串。子串从a开始   指定的字符位置并具有指定的长度。

所以当你说

String.Substring(startPoint, startPoint + 36)

这意味着,您可以在startPoint处开始排名,并在该位置后取startPoint + 36个字符。不仅36字符。

如果你想在startPoint的位置后取36个字符,你只需要;

String.Substring(startPoint, 36)

答案 2 :(得分:1)

请参阅本教程:http://www.dotnetperls.com/substring
.NET Framework 4.5文档:http://msdn.microsoft.com/en-us/library/system.string.substring(v=vs.110).aspx

语法实际上是:String.Substring(Int32 startPosition,Int32 length)
从此实例中检索子字符串。子字符串从指定的字符位置开始并具有指定的长度。

另一个重载版本是String.Substring(Int32 startPosition)
从此实例中检索子字符串。子字符串从指定的字符位置开始,并继续到字符串的末尾。

答案 3 :(得分:0)

无论如何,使用子串方法的正确方法是:

String yourstring=<whatevere you like>;
String destinationstring;
destinationstring=yourstring.Substring(38,36);

以这种方式从char 38检索字符串到38 + 36

答案 4 :(得分:0)

如果是字符串:

startIndex: inclusive
endIndex: exclusive

下面的代码让我们了解startIndex和endIndex。

String s="hello";  
System.out.println(s.substring(0,2));//he  

在上面的子字符串中,0指向h但2指向e(因为结尾索引是排他的)。