这是代码:
private void retrivingText1()
{
string startTag = "zethrone1_03510";//"<Translation>";
string endTag = "-2.8";//"</Translation>";
int startTagWidth = startTag.Length;
int endTagWidth = endTag.Length;
index = 0;
w = new StreamWriter(@"d:\retrivedText1.txt");
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);
w.WriteLine(g);
}
w.Close();
}
我要检索的文件中的第一项工作是Hallo?
,它位于zethrone1_03510
之后,但在zethrone1_03510
和Hallo?
之间有两个空格,所以我'我在新的文本文件中获取它,如Hallo?
我希望Hallo?
zethrone1_03510
-2.8
之后没有Hallo?
这是一个问题。
第二个问题是在文件的末尾有一个文本-2.8
所以我想从第一个Hallo?
中检索所有文本,包括它直到文件结尾或直到最后-2.8
包括它。由于LastIndexOf
与IndexOf
我尝试使用{{1}}代替{{1}},但它不起作用。
我知道还有其他方法,但我想用我的代码来修复/修复我的代码而不使用其他代码方式。这有什么不对吗?
感谢。
答案 0 :(得分:1)
对于您的第一个问题,您可以使用Trim()方法来摆脱空间。您可以修剪结果字符串,如:(" Hallo").Trim();
或variable.Trim();
,这会产生“Hallo”。
LastIndexOf应该可以解决您的第二个问题。你可以使用int position = f.LastIndexOf(endTag);在找到文本后,你应该从循环中断开,这样你就没有无限循环。
http://msdn.microsoft.com/en-us/library/0w96zd3d.aspx
private void retrivingText1()
{
string startTag = "zethrone1_03510";//"<Translation>";
string endTag = "-2.8";//"</Translation>";
int startTagWidth = startTag.Length;
int endTagWidth = endTag.Length;
index = 0;
w = new StreamWriter(@"d:\retrivedText1.txt");
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.LastIndexOf (endTag, start + 1);
if (index == -1)
{
break;
}
// found the endTag
string g = f.Substring(start, index - start + endTagWidth).Trim(); //Trim the founded text so the start and ending spaces are removed.
w.WriteLine(g);
//break so you dont have an endless loop
break;
}
w.Close();
}