删除Scala中由大写字符开头的字符串的单词

时间:2016-04-29 14:31:35

标签: string scala char substring

我想编写一个算法,删除字符串中大写字符开头的每个单词。

例如:

原始字符串:"今天是星期五29点。"

期望的结果:"是29Th。"

我写了这个算法,但还不完整:

def removeUpperCaseChars(str: String) = {
    for (i <- 0 to str.length - 1) {
      if (str.charAt(i).isUpper) {
        var j = i
        var cont = i
        while (str.charAt(j) != " ") {
          cont += 1
        }
        val subStr = str.substring(0, i) + str.substring(cont, str.length - 1)
        println(subStr)
      }
    }
  }

它(据说)用大写字符删除每个单词,而不是仅删除以大写字符开头的单词。更糟糕的是,Scala没有给出任何结果。

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

通过一些假设,像单词总是用空格分开,你可以像这样实现它:

scala> "Today is Friday the 29Th.".split("\\s+").filterNot(_.head.isUpper).mkString(" ")
res2: String = is the 29Th.

我们并不想像你在scala中那样编写算法。这是你在C中做的一种方式。

答案 1 :(得分:1)

string.replaceAll("""\b[A-Z]\w+""", "")怎么样?