Задать вопрос
@spark36
Полная комплектация: 2 руки, 2 ноги, голова, мозги

В чем может быть ошибка при замене в строке?

private string guidToName(string src)
        {
            Regex reg1 = new Regex("cad[0-9a-f]{5}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}");
            Regex reg2 = new Regex("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}");
            string str = src;
            while (true)
            {
                if (reg1.IsMatch(str))
                {
                    string oldStr=reg1.Match(str).ToString();
                    string newStr =session.GetAttributeType(new Guid(reg1.Match(str).ToString())).Name;
                    str.Replace(oldStr, newStr);
                }
                else if (reg2.IsMatch(str))
                    str.Replace(reg2.Match(str).ToString(), session.GetObject(new Guid(reg2.Match(str).ToString())).Caption);
                else break;
            }
            return str;
        }


на входе - строка, которая может содержать гуид коды
на выходе - строка с замененными гуидами на заголовки

и вроде все норм, и в цикл заходит, и первое условие выполняет, как доходит дело до реплэйса, тут херня какая-то, по идее должен заменить гуид на название и дальше двигать, но в строке как содержался гуид, так она там и сидит, и получается бесконечный цикл
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@heartdevil
плыву как воздушный шарик
Привет.
По методу Replace

Данный метод не изменяет значение текущего экземпляра. Вместо этого возвращается новая строка, в которой все вхождения oldValue заменяются на newValue.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы