SHARE
TWEET

Untitled

a guest Mar 13th, 2015 800 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. protected static String unfold2( String s )
  2.    {
  3.        s = s.replaceAll( "\n\r ", "" );
  4.        s = s.replaceAll( "\r\n ", "" );
  5.        s = s.replaceAll( "\n ", "" );
  6.        s = s.replaceAll( "\r ", "" );
  7.        return s;
  8.    }
  9.  
  10. vs
  11.  
  12.     private enum NLStatus
  13.     {
  14.         NONE,
  15.         RC,
  16.         NL,
  17.         RC_NL,
  18.         NL_RC;
  19.     }
  20.  
  21.  
  22.     /**
  23.      * Remove all the '\n' and ’\r' followed by a ' ' from a LDIF String.
  24.      * @param s The String to unfold
  25.      * @return The resulting String
  26.      */
  27.     protected static String unfold( String s )
  28.     {
  29.         int pos = 0;
  30.         char[] unfold = new char[s.length()];
  31.         NLStatus newLine = NLStatus.NONE;
  32.  
  33.         for ( char c : s.toCharArray() )
  34.         {
  35.             switch ( c )
  36.             {
  37.                 case '\n':
  38.                     switch ( newLine )
  39.                     {
  40.                         case NONE:
  41.                             newLine = NLStatus.NL;
  42.                             break;
  43.  
  44.                         case RC:
  45.                             newLine = NLStatus.RC_NL;
  46.                             break;
  47.  
  48.                         case NL:
  49.                             unfold[pos++] = '\n';
  50.                             break;
  51.  
  52.                         case RC_NL:
  53.                             unfold[pos++] = '\r';
  54.                             unfold[pos++] = '\n';
  55.                             newLine = NLStatus.NL;
  56.                             break;
  57.  
  58.                         case NL_RC:
  59.                             unfold[pos++] = '\n';
  60.                             unfold[pos++] = '\r';
  61.                             newLine = NLStatus.NL;
  62.                             break;
  63.                     }
  64.  
  65.                     break;
  66.  
  67.                 case '\r':
  68.                     switch ( newLine )
  69.                     {
  70.                         case NONE:
  71.                             newLine = NLStatus.RC;
  72.                             break;
  73.  
  74.                         case NL:
  75.                             newLine = NLStatus.NL_RC;
  76.                             break;
  77.  
  78.                         case RC:
  79.                             unfold[pos++] = '\r';
  80.                             break;
  81.  
  82.                         case RC_NL:
  83.                             unfold[pos++] = '\r';
  84.                             unfold[pos++] = '\n';
  85.                             newLine = NLStatus.RC;
  86.                             break;
  87.  
  88.                         case NL_RC:
  89.                             unfold[pos++] = '\n';
  90.                             unfold[pos++] = '\r';
  91.                             newLine = NLStatus.RC;
  92.                             break;
  93.                     }
  94.  
  95.                     break;
  96.  
  97.                 case ' ':
  98.                     if ( newLine == NLStatus.NONE )
  99.                     {
  100.                         unfold[pos++] = c;
  101.                     }
  102.                     else
  103.                     {
  104.                         newLine = NLStatus.NONE;
  105.                     }
  106.  
  107.                     break;
  108.  
  109.                 default:
  110.                     switch ( newLine )
  111.                     {
  112.                         case NONE:
  113.                             break;
  114.  
  115.                         case NL:
  116.                             unfold[pos++] = '\n';
  117.                             newLine = NLStatus.NONE;
  118.                             break;
  119.  
  120.                         case RC:
  121.                             unfold[pos++] = '\r';
  122.                             newLine = NLStatus.NONE;
  123.                             break;
  124.  
  125.                         case NL_RC:
  126.                             unfold[pos++] = '\n';
  127.                             unfold[pos++] = '\r';
  128.                             newLine = NLStatus.NONE;
  129.                             break;
  130.  
  131.                         case RC_NL:
  132.                             unfold[pos++] = '\r';
  133.                             unfold[pos++] = '\n';
  134.                             newLine = NLStatus.NONE;
  135.                             break;
  136.                     }
  137.  
  138.                     unfold[pos++] = c;
  139.             }
  140.         }
  141.  
  142.         switch ( newLine )
  143.         {
  144.             case NONE:
  145.                 break;
  146.  
  147.             case NL:
  148.                 unfold[pos++] = '\n';
  149.                 break;
  150.  
  151.             case RC:
  152.                 unfold[pos++] = '\r';
  153.                 break;
  154.  
  155.             case NL_RC:
  156.                 unfold[pos++] = '\n';
  157.                 unfold[pos++] = '\r';
  158.                 break;
  159.  
  160.             case RC_NL:
  161.                 unfold[pos++] = '\r';
  162.                 unfold[pos++] = '\n';
  163.                 break;
  164.         }
  165.  
  166.         return new String( unfold, 0, pos );
  167.     }
RAW Paste Data
Top