2017-09-19 91 views
0

我正在嘗試查找字符串中字符出現次數 在下面的字符串中,我需要查找第一次出現「c」和「c」如何使用Scala Spark查找字符串中的字符長度Spark

Ex: "abccccsdegccccccd" 

第二次出現的次數對於上述結果應該是4和6

val test = "abccccsdegccccccd" 
test.split("c",-1) 
res33: Array[String] = Array(ab, "", "", "", sdeg, "", "", "", "", "", d) 

我試圖用正常分裂,但我並沒有得到預期的results.The下一個字符串中的「c」的索引可以更改。

你的幫助是appreciated.Thank你

回答

3

獲取所有'c'序列的長度。

test.split("[^c]").collect{case s if s.nonEmpty => s.length} 
// res0: Array[Int] = Array(4, 6) 

如果字符串中沒有'c'字符,則返回一個空的Array[Int]

+0

謝謝jwch,這是非常確切的方式來做到這一點。 – Babu

2

你可以用正則表達式做到這一點:

val regex = "[^c]+(c+)[^c]+(c+).*".r 
val result = "abccccsdegccccccd" match { 
    case regex(first, second) => (first.size, second.size) 
} 

或用dropWhiletakeWhile,這既可以丟棄的字符串的第一部分,或只取匹配一些條件的字符串的第一部分,分別爲:

val firstLen = str.dropWhile(_ != 'c').takeWhile(_ == 'c').size 
val secondLen = str.dropWhile(_ != 'c').dropWhile(_ == 'c').dropWhile(_ != 'c').takeWhile(_ == 'c').size 

如果沒有兩組'c's,後者將(結果將爲0)。

相關問題