Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在字符串clojure中查找元音索引_Clojure - Fatal编程技术网

在字符串clojure中查找元音索引

在字符串clojure中查找元音索引,clojure,Clojure,大家好,我正在学习clojure,并试图找到字符串中元音的索引,这就是我所尝试的 def元音[\a\e\i\o\u\y] 让[字索引]交错A编码范围 [[x i]向量词索引的索引 :当一些{x}元音] [i] ] 序号索引 但这给了我指数0或零我做错了什么 当我们将该序列映射到for循环的向量时,interleave将给出一个延迟序列,我想我错过了索引。因此,将实现更改如下 (let [word-index (zipmap (range) "aaded") indexs (for [

大家好,我正在学习clojure,并试图找到字符串中元音的索引,这就是我所尝试的

def元音[\a\e\i\o\u\y] 让[字索引]交错A编码范围 [[x i]向量词索引的索引 :当一些{x}元音] [i] ] 序号索引
但这给了我指数0或零我做错了什么

当我们将该序列映射到for循环的向量时,interleave将给出一个延迟序列,我想我错过了索引。因此,将实现更改如下

(let [word-index (zipmap (range) "aaded")
      indexs (for [ [i x]  word-index
                   :when (some #{x}  vowels)]
                   [i] )
      ]
   (flatten indexs)
  )

这是工作良好,如果有人有更好的实施请分享。这将对我很有帮助,谢谢。

当我们将序列映射到for循环的向量时,interleave将给出一个惰性序列,我想我错过了索引。因此,将实现更改如下

(let [word-index (zipmap (range) "aaded")
      indexs (for [ [i x]  word-index
                   :when (some #{x}  vowels)]
                   [i] )
      ]
   (flatten indexs)
  )

这是工作良好,如果有人有更好的实施请分享。这将对我很有帮助,谢谢。

您需要正确填写输入,以便理解:

让[字索引]交错A编码范围 [[x i]分区2字索引的索引 :当一些{x}元音] [我] prn序列索引 ;; => 0 1 3
为了便于理解,您需要正确形成输入:

让[字索引]交错A编码范围 [[x i]分区2字索引的索引 :当一些{x}元音] [我] prn序列索引 ;; => 0 1 3
对于for函数的每次迭代,都会重复形成相同的哈希集。所以最好在let块中定义它。此外,我们可以直接将散列集用作函数,而不需要使用some函数

(let [word-index (zipmap (range) "aaded")
      vowels-hash (into #{} [\a \e \i \o \u \y])
      indexs (for [[i x]  word-index
                   :when (vowels-hash x)]
               [i])]
  (flatten indexs))

对于for函数的每次迭代,都会重复形成相同的哈希集。所以最好在let块中定义它。此外,我们可以直接将散列集用作函数,而不需要使用some函数

(let [word-index (zipmap (range) "aaded")
      vowels-hash (into #{} [\a \e \i \o \u \y])
      indexs (for [[i x]  word-index
                   :when (vowels-hash x)]
               [i])]
  (flatten indexs))

使用regex有点不同的方法:

所有指数:

user> (let [m (re-matcher #"[aeiou]" "banedif")]
        (take-while identity (repeatedly #(when (re-find m) (.start m)))))
;;=> (1 3 5)
对于单个索引:

user> (let [m (re-matcher #"[aeiou]" "bfsendf")]
        (when (re-find m) (.start m)))
;;=> 3

user> (let [m (re-matcher #"[aeiou]" "bndf")]
        (when (re-find m) (.start m)))
;;=> nil

使用regex有点不同的方法:

所有指数:

user> (let [m (re-matcher #"[aeiou]" "banedif")]
        (take-while identity (repeatedly #(when (re-find m) (.start m)))))
;;=> (1 3 5)
对于单个索引:

user> (let [m (re-matcher #"[aeiou]" "bfsendf")]
        (when (re-find m) (.start m)))
;;=> 3

user> (let [m (re-matcher #"[aeiou]" "bndf")]
        (when (re-find m) (.start m)))
;;=> nil

@贾斯已经把这事搞定了。添加我自己的,以提供一些关于中间步骤中发生的事情的评论

使用集合检查成员资格。那么问题是这是一个元音吗?会很快的

def元音集aeiouy 元音 ;; => {\a\e\i\o\u\y} 我们可以过滤掉元音,然后只得到索引

defn元音索引-1[单词] ->>映射向量范围词;[0\h][1\e][2\l]。。。 过滤器fn[[字符]];[1\e][4\o] 包含?元音字符 地图优先;1 4 元音-1你好! ;; => 1 4 。。。或者我们可以稍微花哨一点:当关键字不知道的时候,谢谢!,以你开始的风格

defn元音索引-2[单词] 对于[[i ch]映射向量范围字 :何时包含?元音ch] 我 元音-2你好! ;; => 1 4
@贾斯已经把这事搞定了。添加我自己的,以提供一些关于中间步骤中发生的事情的评论

使用集合检查成员资格。那么问题是这是一个元音吗?会很快的

def元音集aeiouy 元音 ;; => {\a\e\i\o\u\y} 我们可以过滤掉元音,然后只得到索引

defn元音索引-1[单词] ->>映射向量范围词;[0\h][1\e][2\l]。。。 过滤器fn[[字符]];[1\e][4\o] 包含?元音字符 地图优先;1 4 元音-1你好! ;; => 1 4 。。。或者我们可以稍微花哨一点:当关键字不知道的时候,谢谢!,以你开始的风格

defn元音索引-2[单词] 对于[[i ch]映射向量范围字 :何时包含?元音ch] 我 元音-2你好! ;; => 1 4