消除scala中chars列表中的char

kai*_*ena 0 string scala char indexof

我在Scala中有这个字符列表:

val a = "(i am(a? list) of(/ chars in  )Scala)".toList
Run Code Online (Sandbox Code Playgroud)

我想找到第一个')'的位置并从列表中删除它.我怎样才能做到这一点?

我做了什么(但没有奏效):

val position = a.tail.indexOf(')')
a.drop(position)
Run Code Online (Sandbox Code Playgroud)

并尝试过a.take(position).我发现,这些方法droptake不能很好的为我所需要的.我希望该方法的工作原理如下:

input:  (i am(a? list) of(/ chars in )Scala)
output: (i am(a? list of(/ chars in )Scala)
                     ^
Run Code Online (Sandbox Code Playgroud)

jwv*_*wvh 6

经常被忽视的patch()人会这样做.

a.patch(a.indexOf(')'), List(), 1)
Run Code Online (Sandbox Code Playgroud)

请注意,indexOf()如果目标元素不存在,将会产生误导性结果.

val result = if (a.contains(')') a.patch(a.indexOf(')'), List(), 1)
             else a
Run Code Online (Sandbox Code Playgroud)