String Interpolation trong Scala

Kể từ phiên bản Scala 2.10.0, Scala cung cấp thêm cơ chế mới để tạo ra chuỗi từ dữ liệu của bạn: String Interpolation.
String Interpolation cho phép người dùng có thể nhúng trực tiếp biến vào chuỗi để xử lý.

Scala cung cấp cho chúng ta 3 loại String Interpolators:
– ‘s’ String Interpolator
– ‘f’ String Interpolator
– ‘raw’ String Interpolator

Chúng ta sẽ cùng tìm hiểu về chúng.

1. ‘s’ String Interpolator:
Cách dùng: cho phép người dùng sử dụng trực tiếp biến vào trong chuỗi xử lý.
Cú pháp: s””
Ví dụ 1:


    val company = "Septeni-Technology"
    println(s"Hello, $company")     
    //output: Hello, Septeni-Technology
    

Ở ví dụ 1, chỉ cần sử dụng kí hiệu $ trước tên biến, ta sẽ có được giá trị của biến trong chuỗi interpolater.
Ngoài ra, chuỗi interpolater cũng có thể xử lý các biểu thức tùy ý bằng cách sử dụng ký hiệu ${} , xem ví dụ 2
Ví dụ 2:


    println(s"1+1=${1+1}")          
    //output: 1+1=2
    
    val account = "thang_dx"
    val domain = "septeni-technology.jp"
    println(s"Email= ${account + '@' + domain}")    
    //output: Email= thang_dx@septeni-technology.jp
        

2. ‘f’ String Interpolator
Cách dùng: cho phép tạo ra chuỗi đã được định dạng.
Khi sử dụng ‘f’ interpolator, tất cả các biến phải được định dạng như %d, %i, %f, ….(tham khảo bảng 1.1)
Cú pháp: f””
Ví dụ:


    val years_old = 23
    val name = "Thang"
    println(f"$name%s is $years_old%d years old") 
    //output: Thang is 23 years old
            

Mặc định sau tên biến không có % thì sẽ hiểu là %s (string). Đoạn code ở trên sẽ tương đương với:


    val years_old = 23
    val name = "Thang"
    println(f"$name is $years_old%d years old") 
    //output: Thang is 23 years old
        

Đối với ‘f’ String Interpolator, nó là một kiểu an toàn, vì nếu định dạng các biến không phù hợp, nó sẽ báo lỗi và không được hiển thị.

3. ‘raw’ String Interpolator
Cách dùng: tương tự như ‘s’ String Interpolator, ngoại trừ việc ‘raw’ String Interpolator không escape
các thành phần bên trong của chuỗi. Cụ thể, ở ‘s’ String Interpolator kí hiệu “\n” được hiểu là xuống dòng
còn ở ‘raw’ String Interpolator thì nó được hiểu một chuỗi có giá trị là “\n”.
Cú pháp: raw””
Ví dụ:


    println(s"Result = \n a \n b")
    /*output: Result = 
    a
    b
    */
    println(raw"Result = \n a \n b")
    /*output: Result = \n a \n b
    */
        

Note:Đối với các phiên bản Scala 2.10.0 về trước, không hỗ trợ String Interpolation. Vì một lý do nào đó mà bạn phải dùng những phiên bản như vậy.
Bạn có thể sử dụng hàm format.
Ví dụ:


    val years_old = 23
    val name = "Thang"
    println("%s is %d years old".format(name,years_old))
    //output: Thang is 23 years old
            

Bảng 1-1

Format specifierDescription
%c Character
%d Decimal number (integer, base 10)
%e Exponential floating-point number
%f Floating-point number
%i Integer (base 10)
%o Octal number (base 8)
%s A string of characters
%u Unsigned decimal (integer) number
%x Hexadecimal number (base 16)
%% Print a “percent” character
\% Print a “percent” character

Tham khảo:
https://www.tutorialspoint.com/scala/scala_strings.htm
http://docs.scala-lang.org/overviews/core/string-interpolation.html

Add a Comment

Scroll Up