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"); // true
_result = nil find 1;
hintSilent str (isNil "_result"); // true
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!
array find element
Parameters:
Returns: Number - zero-based position of the first array element that matches x, -1 if not found
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
since arma3 2.02
string find [substring, indexStart]
Parameters:
string: String - string to search insubstring: String - substring to findindexStart: Number - zero-based index which defines where find starts fromReturns: Number - zero-based position of the first sequence of characters that matches substring, -1 if not found
["Apples", "Oranges", "Pears"] find "Oranges"; // returns 1
[1, [2], [[3]]] find [[3]]; // returns 2 - does not work in OFP, returns -1
if (magazines player find "Strela" != -1) then { hint "You've got Strela!"; };
hint str ("japa is the man!" find "the man!"); // returns 8
"abc" find ""; // returns 0
"abcdefghijklmnopqrstuvxyz" find "z"; // returns 24
"abcdefghijklmnopqrstuvxyz" find ["z", 20]; // returns 24, better performance
"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
in · findIf · forceUnicode
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"); // true
_result = nil find 1;
hintSilent str (isNil "_result"); // true
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]