Primo Chalice Ответов: 2

Какова была бы альтернатива циклу for для следующих циклов foreach?


Привет,

У меня есть ошибка, в которой говорится: "не могу назначить'***', потому что это 'переменная итерации foreach'"

Итак, у меня есть следующие циклы foreach, пожалуйста, скажите мне их альтернативу для циклов, чтобы я мог продолжить работу с программой.

foreach (string line in Regex.Split(ArticleData, Environment.NewLine))
{
    while (line.EndsWith(('\n').ToString()) || line.EndsWith(('\r').ToString()))
    {
        line = line.Substring(0, line.Length - 1);


foreach (string ncxline in Regex.Split(Convert.ToString(TotalDataForOPF_NCX), Environment.NewLine))
{
    while (ncxline.EndsWith(('\n').ToString()) || ncxline.EndsWith(('\r').ToString()))
        {
            ncxline = ncxline.Substring(0, ncxline.Length - 1);


Пожалуйста помочь.

С уважением
Аман Чаурасия

Что я уже пробовал:

Я ничего не пробовал, потому что не знаю, как действовать дальше

Richard MacCutchan

('\n').ToString()
С какой стати вы вызываете ToString для строкового символа? Если вы хотите, чтобы он был Строковой константой, а не символом, то используйте двойные кавычки.

F-ES Sitecore

'\n' -это не строка :)

Richard MacCutchan

Нет, но это характер.

Primo Chalice

Сделаю это, но один вопрос. Почему переменные foreach в Visual Basic работают нормально, но показывают ошибку в C#?

Richard Deeming

Репост
Вы уже опубликовали это сообщение:
https://www.codeproject.com/Questions/1245981/How-do-I-assign-a-foreach-iteration-variable[^]

Primo Chalice

- Нет! В основном именно здесь я спрашиваю, как назначить и использовать переменную итерации foreach. В этом вопросе я хочу знать альтернативный способ использования цикла foreach, чтобы можно было использовать переменную.

2 Ответов

Рейтинг:
0

Richard MacCutchan

Создайте строковый массив из Операции регулярного выражения и используйте целочисленную переменную.


Primo Chalice

Сделаю это, но один вопрос. Почему переменные foreach в Visual Basic работают нормально, но показывают ошибку в C#?

Рейтинг:
0

BillWoodruff

Никогда не пытайтесь изменить переменную итератора; никогда не пытайтесь изменить коллекцию, которую вы перечисляете в перечислителе.

Если то, что вам нужно, - это массив строк, сделанных из зачистки окончаний строк при разборе строк файла:

1. обрабатывайте любой стиль разрыва строки:

тип char[] отрабатывается, переносы строки = новый тип char[]{'\р','\п'};

2. Используйте пример:

строка[] strippedLines = ArticleData.Сплит(отрабатывается, переносы строки, StringSplitOptions.RemoveEmptyEntries);