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.
See also
Functions strrindx()
, strlen()
, strsect()
, strput()
, strreplace()