I have a data stream that may contain \r, \n, \r\n, \n\r or any combination of them. Is there a simple way to normalize the data to make all of them simply become \r\n pairs to make display more consistent?
So something that would yield this kind of translation table:
\r --> \r\n \n --> \r\n \n\n --> \r\n\r\n \n\r --> \r\n \r\n --> \r\n \r\n\n --> \r\n\r\n
I believe this will do what you need:
I’m not 100% sure on the exact syntax, and I don’t have a .Net compiler handy to check. I wrote it in perl, and converted it into (hopefully correct) C#. The only real trick is to match "\r\n" and "\n\r" first.
To apply it to an entire stream, just run it on chunks of input. (You could do this with a stream wrapper if you want.)
The original perl:
The test results:
Update: Now converts \n\r to \r\n, though I wouldn’t call that normalization.