我试图编写一个函数来反转定义区域内的任何字母字符的情况(从光标位置到标记位置)但是我很难挣扎。
我觉得与此非常相似的东西会起作用,但我无法理解它。
def invertCase() {
this.getString.map(c => if(c.isLower) c.toUpper else c.toLower)
}
我需要在定义的区域内反转字母字符的大小写(据我所知)我通过调用this.getString(getString获取缓冲区并将其转换为字符串)来做。
通过这样做.getString我相信我选择的区域需要将其字母字符反转,但是跟随它的代码并没有按照我想要的方式进行。
任何指针?
谢谢!
编辑:缓冲区是StringBuilder类型,如果它改变任何东西
XD
答案 0 :(得分:0)
您可以使用splitAt
和map
反转部分字符串,如下所示:
def invertBetween(start: Int, end: Int, str: String) = {
val (a, bc) = str.splitAt(start)
val (b, c) = bc.splitAt(end - start)
a + b.map(c => if (c.isUpper) c.toLower else c.toUpper) + c
}
示例:
invertBetween(3, 10, "Hello, World, Foo, BAR, baz")
res10: String = HelLO, wORld, Foo, BAR, baz
^^^^^^^
答案 1 :(得分:0)
以下是使用collect
和zipWithIndex
scala> val start = 4
start: Int = 4
scala> val end = 9
end: Int = 9
scala> val result = ("Your own String value.").zipWithIndex.collect {
case e if(e._2 >= start && e._2 <= end) => if (e._1.isLower) e._1.toUpper else e._1.toLower
case e => e._1
}.mkString("")
result: String = Your OWN string value.