在Scala中反转案例

时间:2018-03-23 08:10:13

标签: scala stringbuilder

for (i <- marker to cursor - 1 ){        
    if (buffer.charAt(i).isUpper){
        buffer.charAt(i).toString.toLowerCase
    } else if (buffer.charAt(i).isLower) {
        buffer.charAt(i).toString.toUpperCase
    }      
}

我已经尝试了多种方法来实现,但无法找到解决方案,这就是我所处的位置。在尝试其他方法时,我使用slice但无法让它为Bool语句返回if(转换为字符串,但isUpper对字符串不起作用)。目前,这对字符串没有任何作用,因为上下文标记/光标只是突出显示要反转的句子上的选择。

2 个答案:

答案 0 :(得分:1)

这是一个班轮:

val s = "mixedUpperLower"
s.toUpperCase.zip (s).map {case (a, b) => if (a == b) a.toLower else a}.mkString ("")
res3: String = MIXEDuPPERlOWER

也许一个简短的方法更易读:

scala> def invertCase (c: Char) : Char = if (c.isLower) c.toUpper else c.toLower 
invertCase: (c: Char)Char

scala> s.map (invertCase) 
res4: String = MIXEDuPPERlOWER

答案 1 :(得分:0)

"aBcDef".map(x => if(x.isLower) x.toUpper else x.toLower)

打印

  

ABCDEF