首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala subString函数

Scala subString函数
EN

Stack Overflow用户
提问于 2017-06-09 02:35:15
回答 2查看 20.6K关注 0票数 3

嗨,我正在寻找一个解决方案,它将返回给定indexes.For的字符串中的一个子字符串,避免索引绑定异常,目前使用if和else check.Is,还有一个更好的方法(函数式)。

代码语言:javascript
复制
def subStringEn(input:String,start:Int,end:Int)={
  // multiple if check for avoiding index out of bound exception
    input.substring(start,end)
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-09 02:41:16

不确定在索引越界的情况下您希望该函数做什么,但slice可能满足您的需要:

代码语言:javascript
复制
input.slice(start, end)

下面是一些例子:

代码语言:javascript
复制
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
票数 12
EN

Stack Overflow用户

发布于 2017-06-09 02:45:09

Try是这样做的一种方式。另一种方法是仅当长度大于end时才应用子字符串,使用Option[String]

结束索引无效

代码语言:javascript
复制
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

有效结束索引

代码语言:javascript
复制
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 中,如下所示,

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44443212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档