2017-04-13 141 views
5

我不想重新發明輪子。只需查找一個函數,該函數將搜索字符串或字符串向量,併爲找到匹配的每個元素返回true。這是我到目前爲止所嘗試的。R的grepl在朱莉婭

grepl(x::String, y)   = length(search(x, y)) > 0 
grepl(x::Vector{String}, y) = length.(search(x, y)) .> 0 
grepl(x::Vector{AbstractString}, y) = length.(search(x, y)) .> 0 

用法示例:

v = string.('a':'z') 
x = rand(v, 100) .* rand(v, 100) .* rand(v, 100) 
grepl(convert(Vector{String}, x), "z") 

那麼,這將是一個工作的例子,如果我能得到我的類型才能正常工作。基本上我可以使用返回來選擇其中只有"z"的元素。

+0

你能舉一個快速的例子所需的輸入/輸出嗎? –

回答

9

只需使用contains。上0.6,可以用點廣播直接使用它:

julia> contains.(["foo","bar","baz"],"ba") 
3-element BitArray{1}: 
false 
    true 
    true 

上0.5,可以簡單地包裹的第二個參數中的數組:contains.(["foo","bar","baz"],["ba"])

+0

我有時很難記住'contains(x,a)'是'x'是否包含'a',反之亦然。在這種情況下,使用'a⊆x'對我來說更加清楚。相當於上面的代碼就是''ba「.⊆[」foo「,」bar「,」baz「]'。它不調用相同的代碼,而是調用'issubset',但性能似乎相同。 – DNF

+0

請不理我以前的評論。 'issubset'不等於'contains'。例如''ba「⊆」abc「'返回'true'。 – DNF