Mat2Str: Difference between revisions

From BR Wiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
[[Business Rules!]] [[4.20]] introduces the '''Mat2Str''' [[internal function]] which converts an [[arrays|array]] to a [[string]]
[[Business Rules!]] [[4.20]] introduces the '''Mat2Str''' [[internal function]] which converts an [[arrays|array]] to a [[string]]


  MAT2STR(<Mat Source$>, <Destination$>, [, <Delimiter$>])
  MAT2STR(MAT <Array Name>, <String Variable> [, <Delimiter$>] ["<Quote-Type>] [:] [<trim>]")


The '''default Delimiter$''' is [[CR]] on Linux or [[CRLF]] on Windows.
===Parameters===


[[DLM$]] can be used to dynamically redimensions the array.
"MAT Array Name" is the source array, from which you are building a string.
The delimiter will be put after every entry from the array including the last entry. The delimiter can be "" which would simply concatenate the array.
 
Mat2Str performs the opposite action of [[Str2Mat]]
 
Example:
 
00010 dim resulting_String$*100, array$(3)
00020 let array$(1)="first"
00030 let array$(2)="second"
00040 let array$(3)="third"
00050 mat2str(mat array$,resulting_String$,"//")
00060 print resulting_String$


Output:
"String Variable" is the destination string that the function is creating.


first//second//third
"MAT Delimiter$" is a character that will be put after every entry from the array including the last entry. The delimiter can be "" which would simply concatenate the array. It is optional. As of 4.3 it can be an array.


See also [[Syntax#MAT2STR|details about quotes]].
"Quote Type is "Q", "QUOTES" , ' or " and can be used to add quote processing to the string. This means that either a single or double quote will be placed around each of the source array's elements while creating the string. It's case insensitive.  


===MAT2STR===
"Trim" can be :LTRM , :TRIM or :RTRM and signifies the trim pre-processing of array elements. The colon is only used if preceded by a quote type.  
 
MAT2STR( MAT zzz$, str$ [, sep$ [, flags$]] )
 
Where flag$ is in the format:
[ quote-type ] [ :LTRM ] | [ :TRIM ] | [ :RTRM ]
 
Where quote-type can be Q, QUOTES, ('), or ("), case insensitive. Quote-type denotes that each element should be enclosed in quotation marks. The trim flags denote pre-processing of array elements and the leading colon is only present when quote-type is specified.


If Q or QUOTES is specified the BR automatically determines which quote type to apply as follows:
If Q or QUOTES is specified the BR automatically determines which quote type to apply as follows:
Line 110: Line 90:
     1,2
     1,2
     3,4
     3,4
===Defaults===
1. The '''default Delimiter$''' is [[CR]] on Linux or [[CRLF]] on Windows.
===Other===
Mat2Str performs the opposite action of [[Str2Mat]]
===Example===
Example:
00010 dim resulting_String$*100, array$(3)
00020 let array$(1)="first"
00030 let array$(2)="second"
00040 let array$(3)="third"
00050 mat2str(mat array$,resulting_String$,"//")
00060 print resulting_String$
Output:
first//second//third


<noinclude>
<noinclude>
[[Category:Internal Functions]]
[[Category:Internal Functions]]
</noinclude>
</noinclude>

Revision as of 19:37, 12 July 2015

Business Rules! 4.20 introduces the Mat2Str internal function which converts an array to a string

MAT2STR(MAT <Array Name>, <String Variable> [, <Delimiter$>] ["<Quote-Type>] [:] [<trim>]")

Parameters

"MAT Array Name" is the source array, from which you are building a string.

"String Variable" is the destination string that the function is creating.

"MAT Delimiter$" is a character that will be put after every entry from the array including the last entry. The delimiter can be "" which would simply concatenate the array. It is optional. As of 4.3 it can be an array.

"Quote Type is "Q", "QUOTES" , ' or " and can be used to add quote processing to the string. This means that either a single or double quote will be placed around each of the source array's elements while creating the string. It's case insensitive.

"Trim" can be :LTRM , :TRIM or :RTRM and signifies the trim pre-processing of array elements. The colon is only used if preceded by a quote type.

If Q or QUOTES is specified the BR automatically determines which quote type to apply as follows:

First the element is unpacked. That is, if it is contained in quotes, the quotes are stripped and embedded pairs are singled. Next the element is scanned left to right for either type of quote character (single or double). If a quote character is encountered the element is enclosed in the alternate quote type and embedded occurrences of that quote type are doubled. If no quote character is encountered then double quotes are applied.

Quote Processing Examples

Quote Type is Q or QUOTES

Array Element Part in the String Explanation
abcdef "abcdef" Normal processing of double quotes
abc'def "abc'def" A single quote embedded in an array element remains embedded in the string
abc"def 'abc"def' A double quote embedded in an array element remains embedded in the string
abc""def 'abc""def' Embedded quotes are left intact when quotes are not active
'abcdef "'abcdef" One single quote will be included in the string's double quotes.

Quote Type is ' (quote type single) When quote type is double, it mirrors quote type single.

Array Element Part of the String Explanation
abcdef 'abcdef' Normal processing of double quotes
'abcdef '''abcdef' a leading single quote is duplicated when embedded in single quotes
"abcdef '"abcdef' leading double quote is included within the single quotes, like any other character

MAT2STR and STR2MAT trim outside of quotes but not inside of quotes. Also MAT2STR always adds quotes when quotes are present in the data.

When using MAT2STR on a 2 dimensional array, the first delimiter is used for individual elements and the second delimiter at the end of each row. This principle also applies to three to seven dimensions.

Example Given the following two dimensional array zzz$ containing the values-

   1            2
   3            4

The following statements-

   10 Sep$(1)=","
   20 Sep$(2)=hex$("0D0A") ! CRLF
   30 MAT2STR( MAT zzz$, str$, MAT Sep$ )
   40 PRINT str$

Will produce-

   1,2
   3,4

Defaults

1. The default Delimiter$ is CR on Linux or CRLF on Windows.

Other

Mat2Str performs the opposite action of Str2Mat

Example

Example:

00010 dim resulting_String$*100, array$(3)
00020 let array$(1)="first"
00030 let array$(2)="second"
00040 let array$(3)="third"
00050 mat2str(mat array$,resulting_String$,"//")
00060 print resulting_String$

Output:

first//second//third