文字列に特定の部分文字列が含まれているかどうかをテストし、含まれている場合は、それが発生するインデックスをテストしようとしています。ジュリアでどうすればいいですか?
(私の知る限りでは)すべての出現のインデックスを返す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
に置き換えます。