Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- protected static String unfold2( String s )
- {
- s = s.replaceAll( "\n\r ", "" );
- s = s.replaceAll( "\r\n ", "" );
- s = s.replaceAll( "\n ", "" );
- s = s.replaceAll( "\r ", "" );
- return s;
- }
- vs
- private enum NLStatus
- {
- NONE,
- RC,
- NL,
- RC_NL,
- NL_RC;
- }
- /**
- * Remove all the '\n' and ’\r' followed by a ' ' from a LDIF String.
- * @param s The String to unfold
- * @return The resulting String
- */
- protected static String unfold( String s )
- {
- int pos = 0;
- char[] unfold = new char[s.length()];
- NLStatus newLine = NLStatus.NONE;
- for ( char c : s.toCharArray() )
- {
- switch ( c )
- {
- case '\n':
- switch ( newLine )
- {
- case NONE:
- newLine = NLStatus.NL;
- break;
- case RC:
- newLine = NLStatus.RC_NL;
- break;
- case NL:
- unfold[pos++] = '\n';
- break;
- case RC_NL:
- unfold[pos++] = '\r';
- unfold[pos++] = '\n';
- newLine = NLStatus.NL;
- break;
- case NL_RC:
- unfold[pos++] = '\n';
- unfold[pos++] = '\r';
- newLine = NLStatus.NL;
- break;
- }
- break;
- case '\r':
- switch ( newLine )
- {
- case NONE:
- newLine = NLStatus.RC;
- break;
- case NL:
- newLine = NLStatus.NL_RC;
- break;
- case RC:
- unfold[pos++] = '\r';
- break;
- case RC_NL:
- unfold[pos++] = '\r';
- unfold[pos++] = '\n';
- newLine = NLStatus.RC;
- break;
- case NL_RC:
- unfold[pos++] = '\n';
- unfold[pos++] = '\r';
- newLine = NLStatus.RC;
- break;
- }
- break;
- case ' ':
- if ( newLine == NLStatus.NONE )
- {
- unfold[pos++] = c;
- }
- else
- {
- newLine = NLStatus.NONE;
- }
- break;
- default:
- switch ( newLine )
- {
- case NONE:
- break;
- case NL:
- unfold[pos++] = '\n';
- newLine = NLStatus.NONE;
- break;
- case RC:
- unfold[pos++] = '\r';
- newLine = NLStatus.NONE;
- break;
- case NL_RC:
- unfold[pos++] = '\n';
- unfold[pos++] = '\r';
- newLine = NLStatus.NONE;
- break;
- case RC_NL:
- unfold[pos++] = '\r';
- unfold[pos++] = '\n';
- newLine = NLStatus.NONE;
- break;
- }
- unfold[pos++] = c;
- }
- }
- switch ( newLine )
- {
- case NONE:
- break;
- case NL:
- unfold[pos++] = '\n';
- break;
- case RC:
- unfold[pos++] = '\r';
- break;
- case NL_RC:
- unfold[pos++] = '\n';
- unfold[pos++] = '\r';
- break;
- case RC_NL:
- unfold[pos++] = '\r';
- unfold[pos++] = '\n';
- break;
- }
- return new String( unfold, 0, pos );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement