每个单词的Spark过滤器特定字母/字母

时间:2018-04-30 01:14:12

标签: scala

我想从字符串的每个单词中提取特定的字母/字母。

假设字符串是:

val myString = "I want to extract letters form each word of the string"

val splitString = [I, want, to, extract, letters, form, each, word, of, the, string]

现在,如果我想从每个单词中获取a,e,i,o,u(如果单词中包含任何单词),我该怎么办?语法是什么?

3 个答案:

答案 0 :(得分:0)

 myString.split(" ").toList.map(x => x.replaceAll("[^aeiou]", "")).filter(x => x != "")

首先拆分字符串,转换为列表,并通过替换元音将每个元素映射到新元素。希望这会有所帮助!!

答案 1 :(得分:0)

如果您只想过滤掉元音

val wordsFile = sc.textFile("myFile.txt")
val splitWords = wordsFile.flatMap(line => line.split(" ")) 
        .map(word => word.toLowerCase.replaceAll("[aeiou]", ""))
//res0: Array[String] = Array(, wnt, t, xtrct, lttrs, frm, ch, wrd, f, th, strng)

如果您只想按元音过滤

val wordsFile = sc.textFile("myFile.txt")
val splitWords = wordsFile.flatMap(line => line.split(" ")) 
        .map(word => word.toLowerCase.replaceAll("[^aeiou]", ""))
//res0: Array[String] = Array(i, a, o, ea, ee, o, ea, o, o, e, i)

答案 2 :(得分:0)

def vowels(s: String) = s.toLowerCase.replaceAll("[^aeiou]", "")

myString.trim.split("\\W+").map(vowels)

vowels函数从单词中提取元音。这可以替换为您需要的任何处理。

trim删除前导/尾随空格,split将字符串分成单独的单词,以便标点符号。

map只会将vowels应用于每个结果词。