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

Scala:交换字符串中每个字符的大小写,scala,Scala,使用Scala,我想获取初始字符串的一个子字符串,并交换每个字符的大小写,以便大写字母变为小写字母,小写字母变为大写字母 var swapCase = buffer.substring(lwr, upr).to?OTHER?Case 我过去曾使用过.toUpperCase和.toLowerCase命令,我想知道是否有类似的命令,用于只交换大小写,而不必迭代循环中的每个字符,并评估需要对每个字符执行哪些操作,即: if(char(x).isUpperCase){char(x).toLowerCa

使用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}

简言之,是否有一种使用“.”命令而不是写多行的快速方法。这与您将要得到的一样好:

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

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 class CaseStringOps(s: String) {
  def swapCase: String = s.map(swapCharCase)

}