【问题标题】:string.Substring not working correctly in C#string.Substring 在 C# 中无法正常工作
【发布时间】:2013-08-30 14:37:14
【问题描述】:

我在 C# 中遇到了 string.Substring() 的问题

下面是我的示例应用程序。

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.Substring(0,15)

"Jun30/13 杜 SJ"

myString.Substring(0, 10)

“2013 年 6 月 30 日”

myString.Substring(9, 3)

“杜”

myString.Substring(9, 4)

“杜”

它显示 myString.Substring(9, 3)myString.Substring(9, 4)wrong 子字符串。正确的子字符串应该是 "DU" 和 "DU S"

有什么想法吗?

调试图像:http://i.stack.imgur.com/TRjC9.png

【问题讨论】:

  • 记住,子字符串是基于零索引的。第一个字符是 0,而不是 1。
  • 0-空格 1-J 2-u 3-n 4-3 5-0 6-/ 7-1 8-3 9-空格
  • 无法按预期工作!= 无法正常工作
  • 请学习read the documentation。如果你有,你会看到第一个参数startIndexThe **zero-based** starting character position of a substring in this instance.,它会指出你的问题。
  • 选择没有损坏:pragmatictips.com/26。在你提出下一个问题之前阅读并内化它。

标签: c# .net string substring


【解决方案1】:

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

 Jun30/13 DU SJ9802
0123456789

您从第 9 个索引开始,这是一个空格

【讨论】:

  • 如果前导空格不是故意的,则使用String.Trim() 删除前导和尾随空格。不过,这会影响String.Substring() 的索引值。
【解决方案2】:

String.Substring“从指定的字符位置开始,具有指定的长度”。

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

" Jun30/13 DU SJ9802"
 0123456789

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 非常感谢,是我的错误,刚刚从调试控制台获取:(
    • @Harshana:你的错误不是你忘记了索引是从零开始的。你的错误是,当你看到你所期望的和你得到的之间的差异时,你认为你是对的,而一个完全简单的方法的实现是错误的。
    猜你喜欢
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2020-08-01
    • 2013-08-26
    相关资源
    最近更新 更多