String 朱莉娅有一个字符串';包含';子串方法?
我试图测试一个字符串是否包含特定的子字符串,如果包含,则测试它出现的索引。在Julia中如何实现这一点?Julia有两个有用的函数,可以让您实现传统的“contains”函数的功能String 朱莉娅有一个字符串';包含';子串方法?,string,julia,String,Julia,我试图测试一个字符串是否包含特定的子字符串,如果包含,则测试它出现的索引。在Julia中如何实现这一点?Julia有两个有用的函数,可以让您实现传统的“contains”函数的功能 occursin()接受两个参数。第一个是要查找的子字符串,第二个是要搜索的目标或字符串 findfirst()采用相同的参数,但这次返回子字符串第一次出现的索引(如果找到) julia> a = "HelloWorld" "HelloWorld" julia> occursin("Hello", a)
occursin()
接受两个参数。第一个是要查找的子字符串,第二个是要搜索的目标或字符串
findfirst()
采用相同的参数,但这次返回子字符串第一次出现的索引(如果找到)
julia> a = "HelloWorld"
"HelloWorld"
julia> occursin("Hello", a)
true
julia> findfirst("Hello", a)
1:5
有关findfirst()
或occursin()
的更多信息,请参阅Julia文档 据我所知,虽然没有Julia函数返回所有事件的索引,但使用findnext
很容易创建一个函数:
julia> import Base.findall
julia> function findall(pattern,string::AbstractString)
toReturn = UnitRange{Int64}[]
s = 1
while true
range = findnext(pattern,string,s)
if range == nothing
break
else
push!(toReturn, range)
s = first(range)+1
end
end
return toReturn
end
julia> st = "Today is a fresh day: not too warm, not to cold, just fresh!"
"Today is a fresh day: not too warm, not to cold, just fresh!"
julia> ranges = findall("fresh",st)
2-element Array{UnitRange{Int64},1}:
12:16
55:59
julia> st2 = "aaffssffssffbbffssffcc"
"aaffssffssffbbffssffcc"
julia> ranges = findall("ffssff",st2)
3-element Array{UnitRange{Int64},1}:
3:8
7:12
15:20
julia> ranges = findall("zz",st2)
0-element Array{UnitRange{Int64},1}
如果只想说明完全独立的模式,请将s=first(range)+1
替换为s=last(range)+1
。您可以尝试contains()
或search()
或
这两个函数也都采用正则表达式,而不仅仅是子字符串。例如
occursin(r“H\w+?o”,a)
和findfirst(r“H\w+?o”,a)
注意,现在应该在core中提供类似的东西(Julia 1.3)。。
contains(string, substring)
Return a:b, first position, end position
search(string, substring)
Return true or false