46 lines
1.1 KiB
GDScript
46 lines
1.1 KiB
GDScript
class_name HelperTools
|
|
|
|
|
|
func __equals_string(str1:String, str2:String)->bool:
|
|
return str1 == str2
|
|
|
|
func __equals_one_of_strings(str1:String, str_list:Array)->bool:
|
|
return str1 in str_list
|
|
|
|
func split_string(string:String, splitter, splits_count:int = 0):
|
|
var res:Array = []
|
|
var curr_substring: = ""
|
|
var occurances: = 0
|
|
var splitter_length: = 1
|
|
|
|
var matches: = FuncRef.new()
|
|
matches.set_instance(self)
|
|
|
|
if typeof(splitter) == TYPE_STRING:
|
|
matches.set_function("__equals_string")
|
|
splitter_length = splitter.length()
|
|
|
|
elif typeof(splitter) == TYPE_ARRAY:
|
|
matches.set_function("__equals_one_of_strings")
|
|
|
|
for i in range(string.length()):
|
|
if matches.call_func(string.substr(i, splitter_length), splitter):
|
|
|
|
|
|
|
|
res.append(curr_substring)
|
|
|
|
curr_substring = ""
|
|
|
|
occurances += 1
|
|
if splits_count > 0 and occurances == splits_count:
|
|
res.append(string.substr(i + 1, string.length() - i - 1))
|
|
return res
|
|
|
|
continue
|
|
|
|
curr_substring += string[i]
|
|
|
|
res.append(curr_substring)
|
|
|
|
return res
|