使用 Scala 代码在每个大写单词(减去第一个)之前添加 space

Add space before each Capitalized word (minus the 1st one) using Scala code

我是 Scala 的新手...到目前为止我真的很喜欢它。 :)

现在我正在玩 Play Framework,我很惊讶它能如此简单易用。

嗯...手头的问题是我想制作一个字符串,如下所示:

UsersGroupedByRegistrationMonthYear.csv

输出应该是:

Users Grouped By Registration Month Year.csv

你能帮个忙吗?

您可以使用带有 2 个捕获组的正则表达式进行搜索:

([a-z0-9])([A-Z])

并使用此模式替换:

 

RegEx Demo

代码:

repl = input.replaceAll("([a-z0-9])([A-Z])", " ");

不是正则表达式,而是一种非常直接的方法。

val str = "UsersGroupedByRegistrationMonthYear.csv"
str.flatMap(c => if (c.isUpper) Seq(' ', c) else Seq(c)).trim

一种替代方法是将 String.split 与正则表达式环视一起使用,通过大写字母对字符串进行标记而不丢弃它们,然后将标记组合回一个字符串,标记之间有空格:

val in = "UsersGroupedByRegistrationMonthYear.csv"
val out = in.split("(?=[A-Z])").mkString(" ")

println("\"%s\"\nbecomes\n\"%s\"".format(in, out))

这产生:

"UsersGroupedByRegistrationMonthYear.csv"
becomes
"Users Grouped By Registration Month Year.csv"