Код: Выделить всё
Ais
neut
n
sg
A
n
...
Мой код C#:
Код: Выделить всё
string fileStr = File.ReadAllText( @"C:\deu-eng.xml" );
int quoteTagLength = "".Length;
StringBuilder sb = new StringBuilder();
int currIndex = 0;
bool foundSomething = true;
while (foundSomething)
{
foundSomething = false;
int i = fileStr.IndexOf( "", currIndex );
if (i > 0) // found something
{
int i2 = fileStr.IndexOf( "", i + 6 );
currIndex = i2 + 1;
int qi = fileStr.IndexOf( "", currIndex );
if (qi > 0)
{
int qi2 = fileStr.IndexOf( "", qi + 8 );
if (qi2 > 0)
{
string word1 = fileStr.Substring( i + 6, i2 - (i + 6) );
string word2 = fileStr.Substring( qi + quoteTagLength - 1, qi2 - (qi + quoteTagLength) ) + 1;
if (!word1.Contains( " " ) && !word2.Contains( " " ))
{
sb.Append( word1 + " : " + word2 + Environment.NewLine );
}
foundSomething = true;
}
}
}
}
Мой метод уже должен быть быстрее, чем любой метод, использующий XMLReader, поскольку он движется только вперед и требует только пар двух типов полей и может безопасно игнорировать уровни вложенности. так что стек не нужен. Но я считаю, что это должно быть более эффективно, чем сейчас.
Подробнее здесь: https://stackoverflow.com/questions/788 ... in-c-sharp