字符串中的lstrip和rstrip非空白字符

时间:2018-11-25 16:46:37

标签: scala

如何在Scala中从字符串的开头和结尾去除字符(不一定是空格,即空格)?

我正在寻找的Python类似物是lstriprstrip

这是所需的功能:

ltrim("{blah blah}", "{") should equal("blah blah}")
ltrim("blah blah", "{") should equal("blah blah") // no exception

rtrim("blah blah}", "}") should equal("blah blah")

3 个答案:

答案 0 :(得分:2)

如果要从String的开头删除特定字符,可以使用dropWhile

"{{blah blah}".dropWhile(_ == '{')
// "blah blah}"

这会从String的左边删除符合给定谓词的所有字符,在这种情况下,该谓词等于要删除的字符。


为了从右侧删除字符,由于标准库中还没有dropWhileRight等效项,因此一种方法可以包括两次反向:

"{{blah blah}".reverse.dropWhile(_ == '}').reverse
// {{blah blah

或更高效:

"{{blah blah}}".dropRight("{{blah blah}}".reverse.segmentLength(_ == '}'))
// {{blah blah
"{{blah blah}}".stripSuffix("{{blah blah}}".reverse.takeWhile(_ == '}'))
// {{blah blah

答案 1 :(得分:1)

使用正则表达式函数

scala> "{blah blah}".replaceAll("""^[{]+""","")
res35: String = blah blah}

scala> "{{blah blah}".replaceAll("""^[{]+""","")
res36: String = blah blah}

scala> "blah blah}".replaceAll("""^[{]+""","")
res37: String = blah blah}

scala> "blah blah}".replaceAll("""[}]+$""","")
res38: String = blah blah

scala>

答案 2 :(得分:0)