Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <cfscript>
- 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 = "," );
- writeDump(test);
- /**
- *
- * @description Parses a line into an array. Takes a delimiter and can separate values even if they're quoted values.
- */
- public array function lineToArray( required string line, string delimiter = "," ) {
- arguments.line = ReReplace( arguments.line, "[\r\n]+$", "", "all" );
- var _pattern = CreateObject( "java", "java.util.regex.Pattern" ).Compile(
- JavaCast(
- "string",
- '\G' &
- // Delimiter / GROUP 1
- '(\#arguments.delimiter#|\r?\n|\r|^)' &
- // Quoted value / GROUP 2
- '(?:"([^"]*+(?>""[^"]*+)*)"|' &
- // Standard value / GROUP 3
- '([^"\#arguments.delimiter#\r\n]*+))'
- )
- );
- var _group1 = JavaCast( "int", 1 );
- var _group2 = JavaCast( "int", 2 );
- var _group3 = JavaCast( "int", 3 );
- // this will allows us to iterate over all the tokens in the line for individual evaluation
- var _matcher = _pattern.matcher( JavaCast( "string", arguments.line ) );
- var _data = CreateObject( "java", "java.util.ArrayList").Init();
- while ( _matcher.find() ) {
- var _value = _matcher.group( _group2 );
- if ( StructKeyExists( local, "_value" ) )
- _value = _value;
- //_value = Replace( _value, """""", """", "all" ); // Replace escpaed quotes with an unescaped double quote
- else
- _value = _matcher.group( _group3 );
- ArrayAppend( _data, _value );
- // var _delimiter = _matcher.group( _group1 );
- // if ( _delimiter != arguments.delimiter )
- // break;
- }
- return _data;
- }
- </cfscript>
Add Comment
Please, Sign In to add comment