private string ReplaceNewLines( char[] data, int offset, int len ) {
if ( data == null ) {
return null;
}
StringBuilder sb = null;
int start = offset;
int endPos = offset + len;
int i;
for ( i = offset; i < endPos; i++ ) {
char ch;
if ( ( ch = data[i] ) >= 0x20 ) {
continue;
}
if ( ch == '\n' ) {
if ( newLineChars == "\n" ) {
continue;
}
if ( sb == null ) {
sb = new StringBuilder( len + 5 );
}
sb.Append( data, start, i - start );
}
else if ( ch == '\r' ) {
if ( i + 1 < endPos && data[i+1] == '\n' ) {
if ( newLineChars == "\r\n" ) {
continue;
}
if ( sb == null ) {
sb = new StringBuilder( len + 5 );
}
sb.Append( data, start, i - start );
i++;
}
else {
if ( newLineChars == "\r" ) {
continue;
}
if ( sb == null ) {
sb = new StringBuilder( len + 5 );
}
sb.Append( data, start, i - start );
}
}
else {
continue;
}
sb.Append( newLineChars );
start = i + 1;
}
if ( sb == null ) {
return null;
}
else {
sb.Append( data, start, i - start );
return sb.ToString();
}
}