2017-06-08 14 views
0

こんにちは私は、指定されたインデックスの文字列から部分文字列を返すソリューションを探しています。スカラsubString関数

def subStringEn(input:String,start:Int,end:Int)={ 
    // multiple if check for avoiding index out of bound exception 
    input.substring(start,end) 
} 

答えて

2

ないあなたは関数がバウンド外の指標の場合には何をしたいのか確認してください、しかし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 
+0

Perfect.Thank so muh – John

2

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 
関連する問題