2017-04-13 6 views
5

मैं पहिया को फिर से शुरू करने की कोशिश नहीं कर रहा हूं। बस एक फ़ंक्शन ढूंढ रहे हैं जो स्ट्रिंग या स्ट्रिंग वेक्टर की खोज करता है और प्रत्येक तत्व के लिए सत्य लौटाता है जहां मिलान मिलता है। मैंने अभी तक कोशिश की है।जूलिया में आर का 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

मैं कभी-कभी याद रखने के लिए संघर्ष करता हूं कि 'इसमें शामिल है (x, a) '' x' में 'a' या इसके विपरीत है। उस मामले में 'एक ⊆ x' का उपयोग करना मेरे लिए स्पष्ट है। उपर्युक्त कोड के बराबर तब "बीए" है .⊆ ["foo", "bar", "baz"] '। यह एक ही कोड को कॉल नहीं करता है, बल्कि 'जारीकर्ता' कहता है, लेकिन प्रदर्शन समान लगता है। – DNF

+0

कृपया मेरी पिछली टिप्पणी को नजरअंदाज करें। 'जारीकर्ता' 'युक्त' के बराबर नहीं है। उदाहरण के लिए, '" बीए "⊆" एबीसी "' रिटर्न 'सत्य'। – DNF