使用 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])
并使用此模式替换:
代码:
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"
我是 Scala
的新手...到目前为止我真的很喜欢它。 :)
现在我正在玩 Play Framework,我很惊讶它能如此简单易用。
嗯...手头的问题是我想制作一个字符串,如下所示:
UsersGroupedByRegistrationMonthYear.csv
输出应该是:
Users Grouped By Registration Month Year.csv
你能帮个忙吗?
您可以使用带有 2 个捕获组的正则表达式进行搜索:
([a-z0-9])([A-Z])
并使用此模式替换:
代码:
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"