scala - Scala拆分了两个未分隔的单词
问题描述
我有一个带有类似单词的语料库,applefruit
它没有被我想做的任何分隔符分隔。因为这可能是一个非线性问题。我想仅当字典中的单词是语料库中单词的子字符串时才传递自定义字典进行拆分。
apple
如果我的字典在语料库中只有和 3 个单词aaplefruit
, applebananafruit
, bananafruit
. 输出应该看起来像 apple , fruit
apple, bananafruit
, bananafruit
。
请注意,我不是在拆分bananafruit
,目标是通过仅拆分字典中提供的文本来加快处理速度。我正在使用 scala 2.x。
解决方案
您可以将正则表达式与拆分一起使用:
scala> "foobarfoobazfoofoobatbat".split("(?<=foo)|(?=foo)")
res27: Array[String] = Array(foo, bar, foo, baz, foo, foo, batbat)
或者,如果您的字典(和/或要拆分的字符串)包含多个单词...
val rx = wordList.map { w => s"(?<=$w)|(?=$w)" }.mkString("|")
val result: List[String] = toSplit.flatMap(_.split(rx))
推荐阅读
- java - 从0到10的20个随机数数组。如何计算其中的特定数字?
- python - 概率分布导致“进程以退出代码 137 完成(被信号 9:SIGKILL 中断)”
- php - 如何访问配置 php 值(多维数组)到 PHP 中的类函数
- charts - Google Charts-如何在折线图中更改正负轴值的线条颜色
- ios - 如何使用 Swift 4 在 ARKit 中实现实时相机滤镜?
- python - 通过组合其他两个数据帧来派生数据帧
- javascript - 如何使用 Javascript/jQuery 将对象转换为 Json 格式,包括动态表
- javascript - 如何设置角度路由
- python - 如何检查 SAP Server 是否使用 python 运行
- c++ - 为什么在 operator delete 中没有调用析构函数?