在Julia中使用过滤器后使用contains
我正在尝试检查是否有其他文件不包含子字符串“Sys”,但以“.vm”结尾,但我收到一个错误消息:在Julia中使用过滤器后使用contains,julia,Julia,我正在尝试检查是否有其他文件不包含子字符串“Sys”,但以“.vm”结尾,但我收到一个错误消息: ERROR: LoadError: MethodError: no method matching contains(::Array{String,1}, ::SubString{String}) Closest candidates are: contains(::Function, ::Any, ::Any) at reduce.jl:664 contains(::AbstractString
ERROR: LoadError: MethodError: no method matching contains(::Array{String,1},
::SubString{String})
Closest candidates are:
contains(::Function, ::Any, ::Any) at reduce.jl:664
contains(::AbstractString, ::AbstractString) at strings/search.jl:378
代码如下:
for f2 in filter(x -> endswith(x, ".vm"), readdir())
if (!contains(f2,"Sys"))
#Do something with this file
end
end
在对过滤器的输出使用readlines后,我遇到了相同的问题:
for f3 in filter(x -> !startswith(x, "Sys"), readdir())
calledFileFunction = readlines(f3)
fileLength=length(calledFileFunction)
for i=1:fileLength
if (contains(calledFileFunction,"ball"))
#Do something
end
end
end
是否有方法将f2强制转换为常规子字符串而不是“Array{String,1}”,以便我可以使用contains?否则,我应该如何实现这些函数?在第二个示例中,
calledFileFunction
似乎是一个字符串数组。因此,包含
需要应用于(要重命名…)数组的每个元素
@show-typeof(…)
是一个非常有用的东西,如果您刚开始的话,可以插入到代码中
这样做可能会:
for f3 in filter(x -> startswith(x, "test"), readdir())
filecontents = readlines(f3)
fileLength=length(filecontents)
if any(map(f -> contains(f, "julia"), filecontents))
println("$f3 contains \"julia\"")
end
end
你需要一个最低限度的工作示例,以便人们能够帮助你。现在很难帮助甚至理解你的意图,这很奇怪。您的第一个代码段看起来应该可以工作,实际上在我的计算机上也可以工作。您确定这就是生成错误消息的代码吗<代码>“Sys”无论如何都不是一个子字符串,所以你的例子有点不对劲。是的,它对我也适用。这里的示例代码不可靠,没有说明问题,或者您环境中的某些东西正在以错误的不完整方式重新定义
包含的内容。