如何在Julia中针对多个值使用endswith()函数?
解决Julia中
endswith()匹配多个字符串后缀的问题 问题原因
Julia内置的endswith函数仅支持两种用法:
- 单个字符串后缀:
endswith(s::AbstractString, suffix::AbstractString) - 字符集合:
endswith(s::AbstractString, chars::Union{AbstractSet{Char}, AbstractVector{Char}})(仅匹配字符串的最后一个字符是否在集合中)
直接传入字符串的元组或向量会触发MethodError,因为没有对应的方法定义。
解决方案:结合any()遍历检查
通过any()函数遍历所有后缀,逐个调用endswith进行匹配,只要有一个后缀匹配就返回true。
基础用法示例
# 目标字符串 target_str = "notes.txt" # 要匹配的多个后缀(元组或向量均可) suffix_list = (".txt", ".md", ".rst") # 检查是否匹配任意后缀 is_match = any(suffix -> endswith(target_str, suffix), suffix_list) println(is_match) # 输出: true
封装复用函数
如果需要多次使用,可以封装成一个自定义函数:
function endswith_multiple(str::AbstractString, suffixes) return any(s -> endswith(str, s), suffixes) end # 使用示例 println(endswith_multiple("data.csv", [".csv", ".xlsx"])) # true println(endswith_multiple("image.jpg", (".png", ".gif"))) # false
补充说明
- 后缀集合可以是元组、向量或其他可迭代类型,
any()能处理所有可迭代对象。 - 这种方法的时间复杂度是O(n*m),n是后缀数量,m是后缀的平均长度,对于常规数量的后缀(比如十几个以内)完全够用。
内容的提问来源于stack exchange,提问作者Sudoh
相关产品推荐
相关产品推荐

