Scala:交换字符串中每个字符的大小写

时间:2019-11-07 11:38:08

标签: scala

使用Scala,我想要一个初始字符串的子字符串并交换每个字符的大小写,以使大写字母变为小写,小写变为大写。

var swapCase = buffer.substring(lwr, upr).to?OTHER?Case

我过去曾经使用过.toUpperCase和.toLowerCase命令,并且想知道是否存在类似的命令,仅用于交换大小写而不必遍历循环中的每个字符并评估需要对每个字符执行哪个操作即:

if(char(x).isUpperCase){char(x).toLowerCase}

else if(char(x).isLowerCase){char(x).toUpperCase}

简而言之,是否有一种非常快捷的方法来使用“。”来完成此操作。命令而不是写多行。

2 个答案:

答案 0 :(得分:2)

这与您将获得的效果差不多

def swapCase(s: String): String =
  s.map(ch => if (ch.isLower) ch.toUpper else ch.toLower)

答案 1 :(得分:0)

蒂姆(Tim)的oneliner的替代方案可能是:

def swapCharCase(ch: Char) = if (ch.isLower) ch.toUpper else ch.toLower

def swapCase(s: String): String = s.map(swapCharCase)

我发现它更具可读性-也许swapCharCase可能会变得很方便。

要按要求将其用作.swapCase,请改用implicit类提供扩展方法:

implicit class CaseStringOps(s: String) {
  def swapCase: String = s.map(swapCharCase)

}
相关问题