Dir*_*irk 79
尝试
val str = " foo "
str.trim
Run Code Online (Sandbox Code Playgroud)
并查看文档.如果你还需要摆脱这个,
角色,你可以尝试以下方法:
str.stripPrefix(",").stripSuffix(",").trim
Run Code Online (Sandbox Code Playgroud)
另一种清理字符串前端的方法是
val ignoreable = ", \t\r\n"
str.dropWhile(c => ignorable.indexOf(c) >= 0)
Run Code Online (Sandbox Code Playgroud)
这也会照顾到像 ",,, ,,hello"
好的方法是,这里有一个很小的功能,它可以通过字符串从左到右进行一次扫描:
def stripAll(s: String, bad: String): String = {
@scala.annotation.tailrec def start(n: Int): String =
if (n == s.length) ""
else if (bad.indexOf(s.charAt(n)) < 0) end(n, s.length)
else start(1 + n)
@scala.annotation.tailrec def end(a: Int, n: Int): String =
if (n <= a) s.substring(a, n)
else if (bad.indexOf(s.charAt(n - 1)) < 0) s.substring(a, n)
else end(a, n - 1)
start(0)
}
Run Code Online (Sandbox Code Playgroud)
用得像
stripAll(stringToCleanUp, charactersToRemove)
Run Code Online (Sandbox Code Playgroud)
例如,
stripAll(" , , , hello , ,,,, ", " ,") => "hello"
Run Code Online (Sandbox Code Playgroud)
lre*_*der 11
要修剪字符串中的开始和结束字符,请使用drop和dropRight的混合:
scala>"你好,".drop(1).dropRight(1)
res4:String =你好
drop调用删除第一个字符,dropRight删除最后一个字符.请注意,这不像修剪那样"聪明".如果你在"你好"开头没有任何额外的角色,你会将它修剪为"ello".如果你需要更复杂的东西,正则表达式替换可能就是答案.
如果你只想修剪逗号并且两端都有多个逗号,你可以这样做:
str.dropWhile(_ == ',').reverse.dropWhile(_ == ',').reverse
Run Code Online (Sandbox Code Playgroud)
reverse
这里的用法是因为没有dropRightWhile
.
如果你正在寻找一个可能的逗号,stripPrefix
并且stripSuffix
是要走的路,由德克所示.
归档时间: |
|
查看次数: |
72831 次 |
最近记录: |