Scala Запрос на разделение, аналогичный Python - PullRequest
0 голосов
/ 21 апреля 2020

Мне нужна помощь в преобразовании кода python в Scala, и я не могу правильно разбить строку.

Ниже приведен код Python:

import re
Source = "John Mash"
String_Split = re.compile(r'([a-zA-Z0-9]+)')
Temp_Tokens = String_Split.split(Source)
print(Temp_Tokens) 

Вывод ==> ['', 'John', ' ', 'Mash', '']

Мне нужен аналогичный вывод в Scala, и я пробовал разные способы, но я не получаю ожидаемый вывод.

Пример кода Scala, который я пробовал:

object Split 
{
  def main(args: Array[String]) 
  {
    var source = "John Mash"
    val result = source.split("\\s+")
  }
}

1 Ответ

0 голосов
/ 21 апреля 2020

Вот один из способов сохранить внутренний пробел.

//          vvv <-- 3 spaces
scala> "John   Mash".split("\\b")
res0: Array[String] = Array(John, "   ", Mash)
//               yep, 3 spaces --> ^^^

Но вы должны быть осведомлены о том, что составляет границу "слова".

scala> "John9*&^ !@#_Mash".split("\\b")
res1: Array[String] = Array(John9, *&^ !@#, _Mash)

Для разделения , но имейте в виду, подчеркивание _, независимо от того, где оно появляется по отношению к символам «слова», все становится немного сложнее.

scala> "John9_*&^ !@#_Ma_sh".split("((?=[\b_])|(?<=[\b_]))")
res2: Array[String] = Array(John9, _, *&^ !@#, _, Ma, _, sh)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...