嗨,我正在寻找一个解决方案,它将返回给定indexes.For的字符串中的一个子字符串,避免索引绑定异常,目前使用if和else check.Is,还有一个更好的方法(函数式)。
def subStringEn(input:String,start:Int,end:Int)={
// multiple if check for avoiding index out of bound exception
input.substring(start,end)
}发布于 2017-06-09 02:41:16
不确定在索引越界的情况下您希望该函数做什么,但slice可能满足您的需要:
input.slice(start, end)下面是一些例子:
scala> "hello".slice(1, 2)
res6: String = e
scala> "hello".slice(1, 30)
res7: String = ello
scala> "hello".slice(7, 8)
res8: String = ""
scala> "hello".slice(0, 5)
res9: String = hello发布于 2017-06-09 02:45:09
Try是这样做的一种方式。另一种方法是仅当长度大于end时才应用子字符串,使用Option[String]。
结束索引无效
scala> val start = 1
start: Int = 1
scala> val end = 1000
end: Int = 1000
scala> Option("urayagppd").filter(_.length > end).map(_.substring(start, end))
res9: Option[String] = None有效结束索引
scala> val end = 6
end: Int = 6
scala> Option("urayagppd").filter(_.length > end).map(_.substring(start, end))
res10: Option[String] = Some(rayag)此外,您还可以将filter map 和filter组合到 .collect 中,如下所示,
scala> Option("urayagppd").collect { case x if x.length > end => x.substring(start, end) }
res14: Option[String] = Some(rayag)
scala> val end = 1000
end: Int = 1000
scala> Option("urayagppd").collect { case x if x.length > end => x.substring(start, end) }
res15: Option[String] = Nonehttps://stackoverflow.com/questions/44443212
复制相似问题