SCALA-006 Strings trong Scala

Nội dung bài viết

Trong Scala hổ kiểu chuỗi Strings để lưu và thao tác trên chuỗi kí tự.

Về bản chất Strings Scala là lớp Strings trong Java:

"hello theta!".getClass.getName
scala> "hello theta!".getClass.getName
res42: String = java.lang.String

1. Khai báo Strings

Khai báo Strings

val s = "Hello Scala!"
scala> val s = "Hello Scala!"
s: String = Hello Scala!

2. Ép kiểu số học thành Strings

Từ các kiểu số học bạn có thể ép sang String như sau

val a = 1
a.toString
scala> val a = 1
a: Int = 1

scala> a.toString
res52: String = 1

3. Nối chuỗi

Bạn có thể nối chuỗi trong Scala thông qua toán tử +

val s1 : String = "Hello"
val s2 : String = "World"
val result = s1 + " " + s2
scala> val s1 : String = "Hello"
s1: String = Hello

scala> val s2 : String = "World"
s2: String = World

scala> val result = s1 + " " + s2
result: String = Hello World

4. Tạo chuỗi nhiều dòng

Hai cách để tạo ra chuỗi nhiều dòng

  • Dùng kí tự xuống hàng \n

  • Dùng triple-quotes """

val s = "Happy\nNew\nYear"
scala> val s = "Happy\nNew\nYear"     
s: String =                           
Happy                                 
New                                   
Year                                  

Hoặc dùng triple-quotes (tương tự python):

val s = """Love
Is
A
Four
Letter
Word"""
scala> val s = """Love
     | Is
     | A
     | Four
     | Letter
     | Word"""
s: String =
Love
Is
A
Four
Letter
Word

5. Xử lí từng kí tự trong chuỗi ở một thời gian nhất định

Bạn có thể sử dụng

  • map ánh xạ từng kí tự sang kí tự mới
  • filter loại bỏ những kí không thỏa mãn điều kiện
  • foreach không trả về bất kì thứ gì, thực thi hàm bên trong
val myStr = "khoa hoc may tinh"
myStr.map(_.toUpper)
myStr.filter( _ != 'k' )
scala> val myStr = "khoa hoc may tinh"
myStr: String = khoa hoc may tinh

scala> myStr.map(_.toUpper)
res0: String = KHOA HOC MAY TINH

scala> myStr.filter( _ != 'k' )
res1: String = hoa hoc may tinh

Với foreach, không trả về cuối dòng lệnh, tuy nhiên thực hiện một loạt các thao tác:

myStr.foreach(println(_))
scala> myStr.foreach(println(_))
k
h
o
a

h
o
c

m
a
y

t
i
n
h
comments powered by Disqus