为什么不使用此代码从字符串中删除某些内容

时间:2017-07-10 16:18:25

标签: c# string

所以我的数据有“,”分隔的数据。我正在尝试使用Substring分隔不同的数据。

input = input.Substring(input.IndexOf(", ") + 2, input.Length - input.IndexOf(", ") + 2);

在这种情况下,我已经阅读了第一条数据,我正试图将其删除。为了做到这一点,我取第一个实例“,”的索引,并添加2,这给了我短语的结束索引。然后我取整个字符串的长度并减去第一个“,”的最后一个索引。这给了我从“,”结束到字符串结尾的长度。这就是我想要剪辑的内容。出于某种原因,当这段代码运行时,我不断收到ArgumentOutOfRange异常。如果有人能告诉我我做错了什么,那将非常有帮助。

1 个答案:

答案 0 :(得分:0)

  

然后我取整个字符串的长度并减去最后一个字符串   第一个“,”的索引。

不是这样 - 你忘了<a href="#">No pointer.</a>周围的括号。你打算这样做:

input.IndexOf(", ") + 2

如果您没有尝试将所有内容放在一行中 - 您可以避免此问题:

input = input.Substring(
    input.IndexOf(", ") + 2, 
    input.Length - (input.IndexOf(", ") + 2)); // < note additional "()"

您也可以使用var idx = input.IndexOf(", ") + 2; input = input.Substring(idx, input.Length - idx); 来获得相同的结果:

Remove