Stringbuilder(Scala) - 将一个字符的所有实例替换为另一个字符

时间:2018-04-16 13:06:31

标签: scala stringbuilder

我试图编写一个带区域的函数(来自标记位置和光标位置)并替换所有字符实例' X'与角色&​​#39; Y'。

例如,用户输入如下:

subChar('g', 'x')

我知道如何获得该地区(我认为),这只是让我困惑的替代品。我在这里看过类似的问题,但我似乎无法理解它。

另外,我可以简单地将该函数应用于该区域,还是需要获取该区域并执行类似toString()的操作,然后应用其余的语法?

这是我到目前为止所做的:

def subChar(s: Char, t: Char) {
  var region = (lwr until upr)
  region.filterNot('x' == 'y')
}

如果有人有任何指示我会非常感激!

1 个答案:

答案 0 :(得分:0)

好吧,为了测试它,我需要lwr和upr以及一个字符串来操作。

scala> def subChar (input: String, s: Char, t: Char, lwr: Int, upr: Int): String = 
     |   input.zipWithIndex.map { case (c, i) => if (i >= lwr && i < upr && c == s) t else c}.mkString ("")
subChar: (input: String, s: Char, t: Char, lwr: Int, upr: Int)String

scala> subChar ("dodadodado", 'd', 'l', 1, 5) 
res39: String = dolalodado

如果在外部上下文中给出了该数据 - 作为实例变量或其他内容,则不需要它们作为参数。

但请注意,返回结果的方法需要'='。

另一个不变的主题是,从哪里开始计算索引以及间隔的哪个部分是包容性的/独占的,所以要测试它并根据你的需要进行调整。