Здравствуйте.
У меня имеется некоторый массив строк (состоящий из англоязычных слов), полученный следующим образом:
string stringFromBook = "...Здесь разные англоязычные слова (разделенные пробелами) из некоторой книги...";
string[] words = stringFromBook.Split(' '); //Превращаю строку в массив
Я осуществляю поочередное извлечение элементов из массива "words" (в которых содержаться некоторые англ. слова) и далее, при помощи метода:
static string GetTranscriptionFromYandexTranslator(string englishWord) {...} //Тело метода приведено ниже
получаю транскрипции этих англ. слов из Яндекс-переводчика.
После этого, полученные транскрипции, вместе с оригинальными англ. словами, построчно вывожу в консоль:
Console.WriteLine(transcripAndWord);
И всё работает нормально, за исключением того, что в консоль выводиться только 29 срок с транскрипциями (то есть в консоль выводиться только 29 элементов массива, при том, что в массиве всего около 50-ти элементов), а после программа останавливается и выдается сообщение:
"Необработанное исключение типа "System.ArgumentOutOfRangeException" в mscorlib.dll
Дополнительные сведения: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции."
Когда же я в строке программы:
string stringFromBook = "...Здесь разные англоязычные слова (разделенные пробелами) из некоторой книги...";
ввел (для пробы) некоторую другую строку (с другими англ. словами), то максимальное количество выведенных в консоль элементов массива (англ. слов с транскрипциями) уменьшилось до 24 (а было 29).
P.S. У меня имеется предположение, что это может быть как-то связано с переполнением памяти. Возможно сами транскрипции "много весят". Но это все мои догадки, я точно не знаю.
С чем связана эта проблема, и/или как её решить?
Используемый мною программный код:
class Program
{
//Метод получения транскрипции через API Яндекс-переводчика
static string GetTranscriptionFromYandexTranslator(string englishWord)
{
string transcription;
var translateUrl = "https://dictionary.yandex.net/dicservice.json/lookup?ui=ru&text=" + englishWord + "&lang=en-ru&flags=23";
using (var wc = new WebClient())
{
wc.Encoding = Encoding.UTF8;
var resultHtml = wc.DownloadString(translateUrl);
dynamic trsJson = JObject.Parse(resultHtml);
var trs = trsJson.def[0].ts;
transcription = trs;
}
return transcription;
}
static void Main(string[] args)
{
string stringFromBook = "...Здесь разные англоязычные слова (разделенные пробелами) из некоторой книги...";
string[] words = stringFromBook.Split(' ');
string transcripAndWord, transcription;
for (int i = 0; i < words.Length; i++)
{
transcription = GetTranscriptionFromYandexTranslator(words[i]);
transcripAndWord = words[i] + " [" + transcription + "]";
Console.WriteLine(transcripAndWord);
}
Console.ReadLine();
}
}