Arma 3 Scripting

find

  • Arma 3 v0.50
  • First in Operation Flashpoint: Elite v1.00

Command · also in Arrays · Markdown · JSON · 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]