Arma 3 Scripting

Command in Strings, Arrays

find

Also available as Markdown and JSON, or read the original wiki page.

Description

Searches for an array element within an array or an ANSI string within an ANSI string.

Note

Arma 3: If Unicode support is desired, see forceUnicode.

Important

Search is cASe-seNsItiVE!

Syntax

Syntax 1

array find element

Parameters:

Returns: Number - zero-based position of the first array element that matches x, -1 if not found

Syntax 2

since arma3 1.28

string find substring

Parameters:

Returns: Number - zero-based position of the first sequence of characters that matches substring, -1 if not found

Syntax 3

since arma3 2.02

string find [substring, indexStart]

Parameters:

Returns: Number - zero-based position of the first sequence of characters that matches substring, -1 if not found

Examples

Example 1

["Apples", "Oranges", "Pears"] find "Oranges"; // returns 1

Example 2

[1, [2], [[3]]] find [[3]]; // returns 2 - does not work in OFP, returns -1

Example 3

if (magazines player find "Strela" != -1) then { hint "You've got Strela!"; };

Example 4

hint str ("japa is the man!" find "the man!"); // returns 8

Example 5

"abc" find ""; // returns 0

Example 6

"abcdefghijklmnopqrstuvxyz" find "z"; // returns 24
"abcdefghijklmnopqrstuvxyz" find ["z", 20]; // returns 24, better performance

Example 7

"abcßdef" find "c"; // 2
"abcßdef" find "ß"; // 3
"abcßdef" find "d"; // 5 - before forceUnicode

forceUnicode 0; // since Arma 3 v2.02
"abcßdef" find "d"; // 4

See also

in · findIf · forceUnicode

Community notes

R3vo

If you want to return all occurences of a given string in a string use the following code. Thanks to sharp. for providing the code.

private _fnc_findStringsInString =
{
    params ["_string", "_search"];
    if (_string == "") exitWith { [] };
    private _searchLength = count _search;
    private _return = [];
    private _i = 0;
    private _index = 0;
    while { _index = _string find _search; _index != -1 } do
    {
        _string = _string select [_index + _searchLength];
        _i = _i + _index + _searchLength;
        _return pushBack _i - _searchLength;
    };
    _return;
};
["Test,123,123,Test", "Test"] call _fnc_findStringsInString; // returns [0, 13]