如何解决Scala拆分一个没有被任何分隔符分隔的单词
我有一个包含诸如 applefruit
之类的词的语料库,它没有被任何分隔符分隔。因为这可能是一个非线性问题。我想传递一个自定义字典,仅当字典中的一个词是另一个词的子字符串时才进行拆分。如果我的字典只有 apple
所以有 3 个词 aaplefruit
,applebananafruit
,bananafruit
我想要这样的结果 apple,fruit
apple,bananafruit
,{{1 }}。我正在使用 Scala 2.x。
我不知道有没有苹果和香蕉。所以必须从一些字典中搜索单词
解决方法
您可以在 split 中使用正则表达式:
scala> "foobarfoobazfoofoobatbat".split("(?<=foo)|(?=foo)")
res27: Array[String] = Array(foo,bar,foo,baz,batbat)
或者如果您的字典(和/或要拆分的字符串)有多个单词...
val rx = wordList.map { w => s"(?<=$w)|(?=$w)" }.mkString("|")
val result: List[String] = toSplit.flatMap(_.split(rx))
,
您可以对以下模式进行正则表达式查找和替换:
(?=apple)|(?<=apple)
,然后用两边用空格包围的逗号替换。我们可以试试:
val input = "bananaapplefruit"
val output = input.replaceAll("(?=apple)|(?<=apple)",",")
println(output) // banana,apple,fruit
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。