Замена элементов в строке кроме первого Occurence In Scala - PullRequest
1 голос
/ 14 марта 2019

Я относительно новичок в Regex, и хотя я знаю, что в Scala есть метод использования Заменить предметы до первого появления, но мне было интересно, есть ли способ избавиться от Предметов в строке после ее первого вхождения в Scala.

Например, если бы у меня была строка типа

"Hello. W.o.r.l.d"
Как мне удалить все подписки W.

, чтобы это напоминало что-то вроде

"Hello. World"

Спасибо.

Ответы [ 3 ]

4 голосов
/ 14 марта 2019

Не требуется никакого необычного регулярного выражения.Просто split(), а затем переподключите.

val noDots = "Hello. W.o.r.l.d".split("\\.")
val res = noDots.head + "." + noDots.tail.mkString  //res: String = Hello. World

Это будет работать правильно, если в тексте только один ., но если нет ., тогда он вставляет один в конце строки.

3 голосов
/ 14 марта 2019

Вот один подход, использующий сочетание Regex сопоставления с шаблоном и replace:

val s = "Hello. W.o.r.l.d"

val pattern = """(.*?\.)(.*)""".r

s match {
  case pattern(a, b) => a + b.replace(".", "")
  case others => others
}
// res1: String = Hello. World

Обратите внимание, что если строка не имеет ., она будет соответствовать case others.

0 голосов
/ 15 марта 2019

Вы также можете попробовать с комбинацией indexOf и подстроки

scala> val x = "Hello. W.o.r.l.d"
x: String = Hello. W.o.r.l.d

scala> x.substring(0,x.indexOf(".")+1) + x.split("\\.").tail.mkString
res21: String = Hello. World

scala>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...