Почему $"\r\n" == "\r\n\r\n" ???
От: FDSC Россия consp11.github.io блог
Дата: 07.08.11 16:19
Оценка:
Столкнулся с такой странностью:
почему-то $"\r\n" == "\r\n\r\n"
Т.е. когда я вставляю в текст $"$var1\r\n$var2" Вылезает "val1\r\n\r\nval2"

Почему?
Re: Почему $"\r\n" == "\r\n\r\n" ???
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.08.11 19:41
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Столкнулся с такой странностью:

FDS>почему-то $"\r\n" == "\r\n\r\n"
FDS>Т.е. когда я вставляю в текст $"$var1\r\n$var2" Вылезает "val1\r\n\r\nval2"

FDS>Почему?


Хм. Баг, в макросе. Исправим.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Почему $"\r\n" == "\r\n\r\n" ???
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.08.11 19:43
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Столкнулся с такой странностью:

FDS>почему-то $"\r\n" == "\r\n\r\n"
FDS>Т.е. когда я вставляю в текст $"$var1\r\n$var2" Вылезает "val1\r\n\r\nval2"
FDS>Почему?

Потому что при анализе строки анализируется ее исходное представление (чтобы местоположения совпадали). А в коде анализа последовательности \r\n это не учитывается.
По уму этот код нужно просто переписать с использованием PegGrammar. Но жалко тратить время на повторную работу.
Так что пока поправлю старый код.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Почему $"\r\n" == "\r\n\r\n" ???
От: dudkin  
Дата: 10.08.11 20:46
Оценка: :)
Здравствуйте, FDSC, Вы писали:

FDS>Столкнулся с такой странностью:

FDS>почему-то $"\r\n" == "\r\n\r\n"

вот что доллар животворящий делает
Re: Почему $"\r\n" == "\r\n\r\n" ???
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.08.11 21:15
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Столкнулся с такой странностью:

FDS>почему-то $"\r\n" == "\r\n\r\n"
FDS>Т.е. когда я вставляю в текст $"$var1\r\n$var2" Вылезает "val1\r\n\r\nval2"

FDS>Почему?


Если приходится использовать версию компилятора где данный баг еще не поправлен, то воркэраунд очень простой — просто используйте один \n. Он все равно в итоге превратится в \r\n под Windows, так как любой вариант конца строки (\r\n, \r или \n) все равно заменяется на Environment.NewLine.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.