Julia 替换“occursin”函数以查找数组{string,1}中的字符串

Julia 替换“occursin”函数以查找数组{string,1}中的字符串,julia,Julia,我想做的是 i = occursin("ENTITIES\n", lines) i != 0 || error("ENTITIES section not found") 错误信息是 ERROR: LoadError: LoadError: MethodError: no method matching occursin(::String, ::Array{String,1}) Closest candidates are: occursin(::Union{AbstractChar, A

我想做的是

i = occursin("ENTITIES\n", lines)
i != 0 || error("ENTITIES section not found")
错误信息是

ERROR: LoadError: LoadError: MethodError: no method matching occursin(::String, ::Array{String,1})
Closest candidates are:
  occursin(::Union{AbstractChar, AbstractString}, ::AbstractString) at strings/search.jl:452
这是一段julia v0.6代码。我现在正在使用v1.1。我是朱莉娅的新手,不知道什么是合适的替代函数。请提供帮助。

您可以像这样广播Orrusin添加一个。函数名后:

julia> x = "abc"
"abc"

julia> y = ["abc", "xyz"]
2-element Array{String,1}:
 "abc"
 "xyz"

julia> b = occursin.(x, y)
2-element BitArray{1}:
  true
 false

julia> findall(b)
1-element Array{Int64,1}:
 1

julia> findfirst(b)
1
请注意,尽管字符串可以迭代,但广播将其视为标量

另外,值得记住的是,occursin返回Bool值,以便您可以在逻辑测试中直接使用它,例如在问题代码中找不到的i | | errorENTITIES部分

为了在广播发生的返回值中查找true发生的集合中的索引,请使用findall或findfirst函数,还有findlast。区别在于findall返回集合中遇到true的条目向量,而findfirst只返回第一个这样的条目。当您将所有错误传递给它时,还要注意差异。findall将返回一个空向量,findfirst将不返回任何内容

如果您不想在上面的代码中保留向量b,可以直接获取索引。通过将谓词作为第一个参数传递给findall/findfirst,这应该会更快:


嗨Bogumił,谢谢你的帮助!但是我需要数组中字符串的索引。有什么办法吗?
julia> findall(t -> occursin(x, t), y)
1-element Array{Int64,1}:
 1

julia> findfirst(t -> occursin(x, t), y)
1