strindx

Purpose

Finds the index of one string within another string.

Format

idx = strindx(haystack, needle[, start])
Parameters:
  • haystack (String array, or dataframe of type category or string) – The data to be searched.

  • needles (String array or string) – The substring to be searched for in haystack. Must be ExE conformable with haystack input.

  • start (Scalar) – Optional argument, the starting point of the element-by-element search in haystack for an occurrence of needle. The index of the first character in a string is 1. Default=1.

Returns:

idx (Matrix) – Contains the index of the first occurrence of needle, within haystack, which is greater than or equal to start. If no occurrence is found, it will be 0.

Examples

Dataframe example

// Create file name with full path
fname = getGAUSSHome("examples/auto2.dta");

// Load 'rep78' variable
rep78 = loadd(fname, "rep78");

// Print out the first 5 observations
head(rep78);

The above code will print out:

  rep78
Average
Average
      .
Average
   Good

Now we will find the index of the start of "age".

// Find the index of "age" in 'rep78'
idx = strindx(rep78, "age");

// Print the first 5 observations of 'idx'
head(idx);
5.0000000
5.0000000
0.0000000
5.0000000
0.0000000

Dataframe example #2: Searching across multiple variables

The strindx() procedure can also be used to search across multiple variables.

// Create file name with full path
fname = getGAUSSHome("examples/auto2.dta");

// Load 'rep78' and 'make` variable
rep78 = loadd(fname, "rep78 + make");

// Find the index of "age" in 'rep78'
// and "AMC" in 'make'
idx = strindx(rep78, "age"$~"AMC");

// Print the first 5 observations of 'idx'
head(idx);
5.0000000        1.0000000
5.0000000        1.0000000
0.0000000        1.0000000
5.0000000        0.0000000
0.0000000        0.0000000

String array example

// Create a 3x1 string array
state = "alaska" $|
        "alabama" $|
        "arkansas";

// Find the first instance of the
// letter 'a' starting from
// the front of the string
strrindx(state, "a");

Since the search starts from the first character, the above code will print out:

1.0000000
1.0000000
1.0000000
// Find the first instance of the
// letter 'a' starting from the
// 5th character of the string
strindx(state, "a", 5);

This time, the search will start from the 5th character and continue searching towards the last character, resulting in:

6.0000000
5.0000000
7.0000000

String example

An example of the use of this function is the location of a name within a string of names:

// String to search in
haystack = "nameagepaysex";

// String to search for
needle = "pay";

// Find starting index of 'needle'
idx = strindx(haystack, needle, 1);

The above code will set idx equal to:

8.00

This function is used with strsect() for extracting substrings.