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:
array: Array - array to search in
element: Anything - array element to find
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:
string: String - string to search in
substring: String - substring to find
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:
string: String - string to search in
substring: String - substring to find
indexStart: Number - zero-based index which defines where find starts from
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";
Example 2
[1, [2], [[3]]] find [[3]];
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!");
Example 5
"abc" find "";
Example 6
"abcdefghijklmnopqrstuvxyz" find "z";
"abcdefghijklmnopqrstuvxyz" find ["z", 20];
Example 7
"abcßdef" find "c";
"abcßdef" find "ß";
"abcßdef" find "d";
forceUnicode 0;
"abcßdef" find "d";
See also
in · findIf · forceUnicode
Heeeere's Johnny!
Using nil on either side of find will make the whole statement return Nothing:
_array = [1, 2, nil, 4, 5];
_result = _array find nil;
hintSilent str (isNil "_result");
_result = nil find 1;
hintSilent str (isNil "_result");
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;