Home » Scala » String Interpolation trong Scala

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:


Ở 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:


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ụ:


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:


Đố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ụ:


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ụ:


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