Scala 基础 —— String(StringOps)、tuple、Range

scala> val rawData = sc.textFile("...")
rawData: org.apache.spark.rdd.RDD[String]

val line = rawData.first
line: String

0. Double 类型的格式化

  • 保留小数点后两位:value.formatted("%.2f"),此时由 double 转换为 String 类型;

1. String 常用成员及成员函数

  • * 操作的签名为:

    def *(n: Int): String
    Return the current string concatenated n times.
    
    • 简单举例:
    scala> "crazy"*3
    String = crazycrazycrazy
    
  • length:字符串的长度;

  • split()

    和 Java/Python 中的 String 类一样,得到一个 String 构成的数组,接受的参数为字符,

    scala> val pieces = line.split(',')
    pieces: Array[String]
    
  • patch(from: Int, that: GenSeq[A], replaced: Int):在指定位置替换指定数量字符的操作

    • 首先来看其函数签名,
    def patch(from: Int, that: GenSeq[A], replaced: Int): String[A]
    
    • 简单举例:
    scala> "harry".patch(1, "ung", 2)
    String = hungry
    scala> "harry".patch(1, "ung", 4)
    String = hung
    

2. tuple

Scala 中的元组同 Python,由()标识:

val t = (1, 2, 3)
  • 基本用法

    从元组中获取某个字段的值,可以用下标函数,注意是从 _1 开始,或者用 productElement 方法(它是从 0 开始计数的)

    t._1			# 1
    t.productElement(0)	# 1
    

    使用 productArity 方法获得元组的大小:

    t.productArity		# 3
    
  • 元组与 case class

    Scala 创建元组非常简单方便,但通过下标而不是有意义的名称来访问元素会让代码很难理解。我们更希望创建一个简单的记录类型,它可以根据名称而不是下标访问字段。幸运的是,Scala 恰提供这样的语法,可以方便地创建这种记录,这就是 case class。

    case class Student (name: String, age: Int, weight: Double)
    val s1 = Student("zhang", 23, 65.)
    # 我们便可以使用名称来访问字段,颇有几分 map 的感觉
    

3. Range

  • until vs to

    • until:不包括右端点
    • to:包括右端点
    scala> 0 until 5
    res0: scala.collection.immutable.Range.Inclusive = Range(0, 1, 2, 3, 4)
    scala> 0 to 5
    res1: scala.collection.immutable.Range = Range(0, 1, 2, 3, 4, 5)
    
  • by:设置步长

    也即默认步长为1

    scala> 5 to 40 by 5
    res2: scala.collection.immutable.Range.Inclusive = Range(5, 10, 15, 20, 25, 30, 35, 40)
    scala> 5 until 40 by 5
    res3: scala.collection.immutable.Range = Range(5, 10, 15, 20, 25, 30, 35)
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值