C#字符串.IndexOf()工作不正常



我使用的是类似XML格式的文件,如:

<Tables>
    <Student>
      ID
      Roll_Number
      Name
    </Student>
</Tables>

我已经读取了字符串中的文件,现在为了进行解析,我想使用字符串。IndexOf(字符串)方法。它对关闭标签(如<Student><Tables>)很有效,但对关闭标签,如</Tables></Students> ,它给出了错误的索引

这是我的代码:

dbFileString.Substring(dbFileString.IndexOf("<Tables>") + "<Tables>".Length, dbFileString.IndexOf("</Tables>"));

请帮忙。

问题不是IndexOf,而是您对Substring的使用。第二个参数需要是子字符串的长度,而不是结束索引。您需要传入"结束索引-开始索引"作为第二个参数。

var startingIndex = dbFileString.IndexOf("<Tables>") + "<Tables>".Length
var endingIndex = dbFileString.IndexOf("</Tables>")'
var result = dbFileString.Substring(startingIndex, endingIndex - startingIndex);

但是,我真的建议您停止这种手工解析XML的方法,而是使用XmlDocument之类的东西。

dbFileString.Substring(int startIndex,int length)是正确的语法。如果你能具体说明你想在这里实现什么,那将是很有帮助的。根据代码,我假设您正在尝试获取标签Tables和/Tables之间的数据。请找到下面的代码。

dbFileString.Substring(dbFileString.IndexOf("<Tables>")+"<Tables>".Length, dbFileString.Length-("</Tables>".Length) - ("Tables".Length));

最新更新