1

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

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

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

String.Substring(startPoint, Endpoint)

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

 String.Substring(38, 36)

我的程序会很高兴地test string从上面的例子中读入。

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

我尝试修改我的调用,使其看起来类似于:

String.Substring(startPoint, startPoint + 36)

但这返回了一堆我不需要或不想要的额外字符。

现在我对这种方法的想法是,它通过获取我的初始点(从字符串开头的第 38 个字符)开始工作,然后从第 38 个字符开始移动 36 个字符。我对这种方法如何运作的想法是错误的吗?

为什么这台计算机会抱怨一个问题,但无论如何都会做我想要的?

4

5 回答 5

3

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

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

警告来自插件吗?

于 2013-11-08T12:45:38.610 回答
2

String.Substring Method (Int32, Int32)

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

所以当你说

String.Substring(startPoint, startPoint + 36)

这意味着,您可以从 开始位置startPoint,并startPoint + 36在该位置之后获取字符。不仅36性格。

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

String.Substring(startPoint, 36)
于 2013-11-08T12:53:14.817 回答
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)
从此实例中检索子字符串。子字符串从指定的字符位置开始,一直持续到字符串的末尾。

于 2013-11-08T13:37:04.097 回答
0

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

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

这样,您可以从 char 38 到 38+36 检索字符串

于 2013-11-08T12:56:15.200 回答
0

如果是字符串:

startIndex: inclusive
endIndex: exclusive

让我们通过下面给出的代码来理解 startIndex 和 endIndex。

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

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

于 2019-10-25T10:17:16.670 回答