Legato
Legato

GoFiler Legato Script Reference

 

Legato v 1.4j

Application v 5.22b

  

 

Chapter FiveGeneral Functions (continued)

ScanString Function

Overview

The ScanString function scans a list of strings (or tokens) and returns an index position to the reference list.

Syntax/Parameters

Syntax

int = ScanString ( string data, string match, [boolean case] );

Parameters

data

A string containing a list of items to scan. See Remarks for formatting.

match

A string to match within the list. The match is case-sensitive. the match string should not contain leading or trailing spaces.

case

An optional boolean value indicating whether to search using case sensitivity. The default value is TRUE.

Return Value

Returns an int as the zero-based index to the item in the list or -1 for failure (not found).

Remarks

The ScanString function examines the incoming data parameter to determine if it is a line, comma or space delimited list. If a determination cannot be made, the string will be compared after trimming spaces.

The scan function is useful for matching simple linear non-array lists or sets of string data and it does not care about item order or duplicates. Unlike the InString, IsInString or FindInString functions, the item must be matched in its entirety. In addition, the item position, not the character position, is returned.

Since the function employs a linear search, ScanString is not recommended for repetitively searching long lists of data.

Delimiter determination is performed by checking for line endings (0x0D), then commas and finally space. Note that a single item list will simply compare data to match. As the function is performed, each item is trimmed for spaces prior to comparing to the match parameter, accordingly the match parameter should not contain trailing or leading spaces

Example

An example including all modes:

handle          hWP;
string          s1, s2, s3, s4, s5, ref;
int             i1, i2, i3, i4;
int             ix;


s1  = "Horse Cat Dog Frog Log Hog";
s2  = "Horse, Cat  , Dog, Frog ,   Log, Hog  ";
s3  = "Horse\rCat\r  Dog\rFrog\rLog \rHog";
s4  = "Horse";
ref = "Horse Cat Dog Frog Log Hog error";

hWP = WordParseCreate(WP_GENERAL, ref);

AddMessage("Item  Word    Space Comma  Line  None");
AddMessage("----  ------- ----- ----- ----- -----");
ix = 0;
s5 = WordParseGetWord(hWP);
while (s5 != "") {
  i1 = ScanString(s1, s5);
  i2 = ScanString(s2, s5);
  i3 = ScanString(s3, s5);
  i4 = ScanString(s4, s5);
  AddMessage("  %2d  %-8s %4d  %4d  %4d  %4d", ++ix, s5, i1, i2, i3, i4);
  s5 = WordParseGetWord(hWP);
  }

Note that each s1, s2, s3 contain a different delimiter mode and s4 is a single item. Note that spaces are randomly added to the lists to demonstrate the trimming action. The log result:

Item  Word    Space Comma  Line  None
----  ------- ----- ----- ----- -----
   1  Horse       0     0     0     0
   2  Cat         1     1     1    -1
   3  Dog         2     2     2    -1
   4  Frog        3     3     3    -1
   5  Log         4     4     4    -1
   6  Hog         5     5     5    -1
   7  error      -1    -1    -1    -1
   

Related Functions

Platform Support

Go13, Go16, GoFiler Complete, GoFiler Corporate, GoFiler, GoFiler Lite, GoXBRL

Legato IDE, Legato Basic