我有一個包含"word1-word2----word3--word4"
一個字符串,我要算的分隔符是在這種情況下-
,但我想計數的重複實例作爲1
(---
計數將在1
),我使用line.count(_ == '-')
,它給出了計數7
,我需要它是3
。斯卡拉算一個字符的非連續出現在字符串
感謝
編輯: 我有分隔符的數組如下
val delimiterMap = scala.collection.mutable.LinkedHashMap[Char, Int]()
val delimitersList = List(',', ';', ':', '|', '\t','-')
for (a <- delimitersList)
delimiterMap += a -> line.replaceAll(a.toString+"+",a.toString).count(_ == a)
其運行時提供了以下錯誤:
java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 1
|+
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.sequence(Pattern.java:2123)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at java.lang.String.replaceAll(String.java:2223)
at $anonfun$1.apply(<console>:16)
at $anonfun$1.apply(<console>:15)
at scala.collection.immutable.List.foreach(List.scala:381)
... 33 elided
所以我覺得這是有問題replaceAll正則表達式我使用
你可以檢查我的答案更新您的編輯 –
我嘗試了,但它並不能算「 - 」,總爲0 – sam
我不好它做的工作,但我改變最後一行delimiterMap + =一 - >(a +「+」)。r.findAllIn(line).length,thanks Evgeny – sam