converting an array to a string...

Is there an easy way to convert an array to a string? I am wanting to convert and array like {"This", "is", "an", "array"} to "This is an array". This would be similar to the str() or val() or recordtostring() functions but would work on an array.

I am sure it can be done with a a loop and a few strrep() statements but if there is a simplier way...
  • I'm not immediately aware of any single function to accomplish that so either looping or a couple functions together might be your best option, especially since you want to insert spaces between some array elements.

    Maybe do three steps rather than a loop:
    1. Convert array to string -- str()
    2. Clip off the {" and "} -- strclpl() and strclpr()
    3. Replace all ", " with " " -- strrep()
  • Hi Cliff,

    The only other thing I could think of is...

    $G.thearray={"This", "is", "an", "array"};$G.thestr="";for $i = 1 to lng(denull($G.thearray)) do ($G.thestr=$G.thestr " " $i in $G.thearray)

    hope this helps...
    -Mark
  • I don't know of a simplier way in SC system language, but if you can use javascript you may be able to use the .join method on the array. The syntax is:
    outputStr = inputArray.join( delimiter );

    If you wrote a little javascript function you could use it in SC expressions.
    function ats( scArray, scDelim )
    {
    var newstuff = scArray.join( scDelim );
    return newstuff;
    }

    Call the js function in an expression like this:
    $L.newstr=jscall("test.ats",$L.array," ")

    "test" in "test.ats" would be the name of the ScriptLibrary record.

    Good luck!
    Sam
  • Verified Answer

    There is a rad function not generally documented called strraw

    Can be used like this......

    $L.message={"line 1", "line 2", "line 3", "etc"}

    $L.string.message=strraw($L.message)

    If you want carriage returns in your string you can use this.......

    $L.string.message=strraw($L.message, "newline")
  • All excellent suggestions. Thanks to each of you. Ben and Mark did things about as I would have. Sam gets a few extra point for pusing Java - something I should learn. Keven get 10 points for to solution I thought was avaialble but could not find and the quickest, simplest solution available.
  • Hi All, 

    I have one requirement for writing a validation for 'Solution' field. When solution is written less than 25 characters, as validation should throw saying" Solution should be greater than 25 characters".  I am using currently HPSm 9.40 version. Need to write conditions in RuleSets. Please help.

    I have one issue here. Solution field is of Array type. How to conevrt Array to Character. I have written the below condition for conversion. 

    vars.$L_file.resolution.toString();
    print(vars.$L_file.resolution);  

    and it is printing like {"1","2","3"}  .  But, I want this to come in 123...like no.of characters. 

    Also,After this, I am not knowing how to write a validation after this.Please help me. I am not aware of the coding part.

    Hi Keven/Cliff, I have tried to write RAD function like you have provided. But, couldn't make it. Could u please help. Here the input value for Solution field is 'resolution'. 

     

  • There is create solutions above.

    Also you can use next JS to convert array to string:

    function ArrayToString(val)
    {
    	var type=system.functions.type(val)
    	if (type==8){
    		return val.join("")
    	}
    }
  • There is create solutions above.

    Also you can use next JS to convert array to string:

    function ArrayToString(val)
    {
    	var type=system.functions.type(val)
    	if (type==8){
    		return val.join("")
    	}
    }
  • There is create solutions above.

    Also you can use next JS to convert array to string:

    function ArrayToString(val)
    {
    	var type=system.functions.type(val)
    	if (type==8){
    		return val.join("")
    	}
    }
  • Hi sir, I have written one JS code as below and it is calculating the no.of characters. Now I am not knowing how to use this script for writing a validation for solution field by restricting the length as "Please provide minimum 25 characters". Please help on this sir. var resolution=vars.$L_file.resolution var resolutionString= ""; for(i in resolution) { if (resolution[i] == null || resolution[i] == "") { } else { resolutionString = resolutionString " " resolution[i]; } } var resolutionLength = resolutionString.length