我试图使用索引和子字符串从文件中获得字符串在代码中有什么错误

本文关键字:字符串 代码 错误 什么 文件 索引 | 更新日期: 2023-09-27 18:08:58

 private void test()
 {
   int index = 0;
   int length = 0;
   while (true)
   {
     index = f.IndexOf("Text", index + 1);
     if (index == -1)
     {
       break;
     }
     int t = f.IndexOf("<", index);
     int e = f.IndexOf("/", t);
     string g = f.Substring(index , f.Length - t);
   }
 }

我试图从中获取字符串的文本文件的内容:

daniel<Text>THISISOUTisthere</Text>
<Text>hellobye</Text>
<Text>danielTHISishereandnotthere</Text>
danie <Text> is THIS here and not THERE</Text>

最后,我希望g每次都包含标签文本和标签文本之间的文本,最后我不能在这里写符号较低和较高,但我想根据我的代码只得到这两个标签之间的文本。使用:

<Text> and </Text> tags

谢谢你的帮助

我试图使用索引和子字符串从文件中获得字符串在代码中有什么错误

假设您真的想要这样做而不使用XmlTextReader,这很好-有时使用自己的解决方案很有趣,您可以尝试这样做。我没有测试它,但如果我明白你想做什么,它可能很接近:

string startTag = "<Text>";
string endTag = "</Text>";
int startTagWidth = startTag.Length;
int endTagWidth = endTag.Length;
index = 0;
while (true)
{
   index = f.IndexOf(startTag, index);
   if (index == -1) 
   {
      break; 
   }
   // else more to do - index now is positioned at first character of startTag
   int start = index + startTagWidth;
   index = f.IndexOf(endTag, start+1);
   if (index == -1)
   {
      break; 
   }
   // found the endTag
   string g = f.SubString(start, index - start)
}

由于这不是一个有效的XML片段,所以很多XML类可能都不愿意解析它。

您也可以使用正则表达式,如:

Regex r = new Regex("<Text>(.*?)</Text>");
var matches = r.Matches(f);
var sb = new StringBuilder();
foreach (Match match in matches)
{
    sb.Append(match.Groups[1]);
}
var g = sb.ToString();