C# 字符串。子字符串在C中工作不正常

C# 字符串。子字符串在C中工作不正常,c#,.net,string,substring,C#,.net,String,Substring,我在C中遇到了字符串.子字符串的问题 我的示例应用程序如下 string myString = " Jun30/13 DU SJ9802"; List<string> list = new List<string>(); list.Add(myString.Substring(0,15)); list.Add(myString.Substring(0, 10)); list.Add(myString.Substring(9, 3)); list.Add(myString.

我在C中遇到了字符串.子字符串的问题

我的示例应用程序如下

string myString = " Jun30/13 DU SJ9802";
List<string> list = new List<string>();
list.Add(myString.Substring(0,15));
list.Add(myString.Substring(0, 10));
list.Add(myString.Substring(9, 3));
list.Add(myString.Substring(9, 4));
当我看到结果时,它显示为

myString.子字符串0,15

2013年6月30日杜斯杰

myString.Substring0,10

2013年6月30日

myString.substring 9,3

myString.substring 9,4

它为myString.substring 9,3和myString.substring 9,4显示了错误的子字符串。正确的子字符串应该是DU和DU S

有什么想法吗


调试映像:

它实际上工作正常。字符串上有一个前导空格,因此第九个索引是DU前面的空格。考虑这个图表:

 Jun30/13 DU SJ9802
0123456789
从第九个索引开始,这是一个空格。

从指定的字符位置开始,具有指定的长度

在您的情况下,如果查看字符串:

" Jun30/13 DU SJ9802"
 0123456789

位置9是空格,所以9,3应该是DU,9,4应该是DU,这正是你得到的。

我相信你忘记了字符索引是从0开始的,而不是1。

记住,子字符串是基于零索引的。第一个字符是0,而不是1.0-space 1-j2-u3-n4-356-/7-188-39space未按预期工作!=工作不正常请学着去做。如果有,您会看到第一个参数startIndex是本例中子字符串的**从零开始**起始字符位置。这将指出您的问题。选择未中断:。在问下一个问题之前,请阅读并将其内部化。如果前导空格不是故意的,请使用String.Trim删除前导空格和尾随空格。这会影响您的String.Substring的索引值。非常感谢,这是我的错误,只是从调试控制台中获取:@Harshana:您的错误并不是忘记索引是以零为基础的。你的错误是,当你看到你期望的和你得到的之间的差异时,你认为你是对的,而一个完全简单的方法的实现是错误的。