#include "script_component.hpp" /* * Author: bovine3dom * Determines whether one string matches another and how many characters match. Case insensitive. * * Arguments: * 0: stringA * 1: stringB * * Return Value: * Number of matching characters * * Example: * ["a", "b"] call ace_common_fnc_stringCompare * * Public: Yes */ params ["_string", "_searchTerm"]; _string = toLower _string; // removes case sensitivity _searchTerm = toLower _searchTerm; private _arraySearchTerm = toArray _searchTerm; // splits string into array of unicode decimals private _arrayString = toArray _string; private _sizeSearchTerm = count _arraySearchTerm; // We only measure the array once private _sizeString = count _arrayString; private _matchingCharacters = 0; private _searchIterator = 0; private _targetIterator = 0; while {_searchIterator < _sizeSearchTerm && _targetIterator < _sizeString} do { // Prevents us from going out of bounds if (_arraySearchTerm select _searchIterator == _arrayString select _targetIterator) then { // If we have a match, start looking for the next character in the search term _matchingCharacters = _matchingCharacters + 1; _searchIterator = _searchIterator + 1 }; _targetIterator = _targetIterator + 1; // Look at the next character in the string }; _matchingCharacters