C#字符串.IndexOf()工作不正常
本文关键字:工作 不正常 字符串 IndexOf | 更新日期: 2024-10-21 17:47:11
我使用的是类似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));