Regex 使用Scala代码在每个大写单词(减去第一个)前添加空格
我是新来的Regex 使用Scala代码在每个大写单词(减去第一个)前添加空格,regex,string,scala,string-matching,uppercase,Regex,String,Scala,String Matching,Uppercase,我是新来的Scala。。。到目前为止,我真的很喜欢。:) 现在我正在玩游戏,我很惊讶这是多么简单的开始 嗯。。。目前的问题是,我想让字符串更具可读性: UsersGroupedByRegistrationMonthYear.csv 输出应为: Users Grouped By Registration Month Year.csv 你能帮忙吗?你可以用这个正则表达式搜索2个捕获组: ([a-z0-9])([A-Z]) 并使用此模式替换: $1 $2 代码: repl = input.r
Scala
。。。到目前为止,我真的很喜欢。:)
现在我正在玩游戏,我很惊讶这是多么简单的开始
嗯。。。目前的问题是,我想让字符串更具可读性:
UsersGroupedByRegistrationMonthYear.csv
输出应为:
Users Grouped By Registration Month Year.csv
你能帮忙吗?你可以用这个正则表达式搜索2个捕获组:
([a-z0-9])([A-Z])
并使用此模式替换:
$1 $2
代码:
repl = input.replaceAll("([a-z0-9])([A-Z])", "$1 $2");
您可以使用此正则表达式搜索2个捕获组:
([a-z0-9])([A-Z])
并使用此模式替换:
$1 $2
代码:
repl = input.replaceAll("([a-z0-9])([A-Z])", "$1 $2");
不是正则表达式,而是一种非常直接的方法
val str = "UsersGroupedByRegistrationMonthYear.csv"
str.flatMap(c => if (c.isUpper) Seq(' ', c) else Seq(c)).trim
不是正则表达式,而是一种非常直接的方法
val str = "UsersGroupedByRegistrationMonthYear.csv"
str.flatMap(c => if (c.isUpper) Seq(' ', c) else Seq(c)).trim
一种替代方法是使用String.split和regex lookarounds以大写字母标记字符串,而不丢弃它们,然后将标记组合回一个字符串中,标记之间留有空格:
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"
一种替代方法是使用String.split和regex lookarounds以大写字母标记字符串,而不丢弃它们,然后将标记组合回一个字符串中,标记之间留有空格:
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"