Это должно быть сделано в двух частях. Сначала вы найдете индекс этого символа в строке (если он существует). Теперь, если вы найдете индекс, вы вернете нарезанную строку, в противном случае вернет исходную строку.
Я предполагаю, что вы не можете использовать некоторые методы String для непосредственного выполнения этого ...
Если вы используете Scala 2.13
def foo(string: String, key: Char): String = {
val indexOption =
string
.lazyZip(LazyList.from(0))
.find({ case (c, i) => c == key })
.map({ case (c, i) => i })
indexOption
.map(index => string.slice(0, index) + string.slice(index + 1, string.length))
.getOrElse(string)
}
Или, если вы используете Scala 2.12,
def foo(string: String, key: Char): String = {
val indexOption =
string
.toStream
.zipWithIndex
.find({ case (c, i) => c == key })
.map({ case (c, i) => i })
indexOption
.map(index => string.slice(0, index) + string.slice(index + 1, string.length))
.getOrElse(string)
}