Guest User

Untitled

a guest
Jun 21st, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. <cfscript>
  2.  
  3. test = lineToArray( line = '67,Legacy,"PER CUTLOG 036668468, OPTING MEMBER OUT OF VBID PROGRAM, GENERATED 91 ACCRETION, GENERATED NM24-VBID OPT-OUT NOTICE, END DATE, 01/31/2018. SVN 01/26/2018"', delimiter = "," );
  4.  
  5. writeDump(test);
  6.  
  7.  
  8. /**
  9. *
  10. * @description Parses a line into an array. Takes a delimiter and can separate values even if they're quoted values.
  11. */
  12. public array function lineToArray( required string line, string delimiter = "," ) {
  13.  
  14. arguments.line = ReReplace( arguments.line, "[\r\n]+$", "", "all" );
  15.  
  16. var _pattern = CreateObject( "java", "java.util.regex.Pattern" ).Compile(
  17. JavaCast(
  18. "string",
  19. '\G' &
  20. // Delimiter / GROUP 1
  21. '(\#arguments.delimiter#|\r?\n|\r|^)' &
  22. // Quoted value / GROUP 2
  23. '(?:"([^"]*+(?>""[^"]*+)*)"|' &
  24. // Standard value / GROUP 3
  25. '([^"\#arguments.delimiter#\r\n]*+))'
  26. )
  27. );
  28.  
  29. var _group1 = JavaCast( "int", 1 );
  30. var _group2 = JavaCast( "int", 2 );
  31. var _group3 = JavaCast( "int", 3 );
  32.  
  33. // this will allows us to iterate over all the tokens in the line for individual evaluation
  34. var _matcher = _pattern.matcher( JavaCast( "string", arguments.line ) );
  35.  
  36. var _data = CreateObject( "java", "java.util.ArrayList").Init();
  37.  
  38. while ( _matcher.find() ) {
  39.  
  40. var _value = _matcher.group( _group2 );
  41.  
  42. if ( StructKeyExists( local, "_value" ) )
  43. _value = _value;
  44. //_value = Replace( _value, """""", """", "all" ); // Replace escpaed quotes with an unescaped double quote
  45. else
  46. _value = _matcher.group( _group3 );
  47.  
  48. ArrayAppend( _data, _value );
  49.  
  50. // var _delimiter = _matcher.group( _group1 );
  51.  
  52. // if ( _delimiter != arguments.delimiter )
  53. // break;
  54.  
  55. }
  56.  
  57. return _data;
  58.  
  59. }
  60. </cfscript>
Add Comment
Please, Sign In to add comment