【问题标题】:Add space before each Capitalized word (minus the 1st one) using Scala code使用 Scala 代码在每个大写单词(减去第一个)之前添加空格
【发布时间】:2016-12-11 03:52:10
【问题描述】:

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

现在我正在和Play Framework 一起玩,我很惊讶它是多么简单。

嗯...手头的问题是我想让一个字符串更易读:

UsersGroupedByRegistrationMonthYear.csv

输出应该是:

Users Grouped By Registration Month Year.csv

你能帮忙吗?

【问题讨论】:

    标签: regex string scala string-matching uppercase


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      并使用此模式替换:

      $1 $2
      

      RegEx Demo

      代码:

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

      【讨论】:

        【解决方案3】:

        另一种方法是使用 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"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-11
          • 1970-01-01
          • 1970-01-01
          • 2011-03-25
          • 2016-11-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多