こんにちは私は、指定されたインデックスの文字列から部分文字列を返すソリューションを探しています。スカラsubString関数
def subStringEn(input:String,start:Int,end:Int)={
// multiple if check for avoiding index out of bound exception
input.substring(start,end)
}
こんにちは私は、指定されたインデックスの文字列から部分文字列を返すソリューションを探しています。スカラsubString関数
def subStringEn(input:String,start:Int,end:Int)={
// multiple if check for avoiding index out of bound exception
input.substring(start,end)
}
ないあなたは関数がバウンド外の指標の場合には何をしたいのか確認してください、しかし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
Try
ですそれを行う一つの方法。もう1つの方法は、長さが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
、以下のように.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] = None
Perfect.Thank so muh – John