Scala | String Interpolation

String Interpolation refers to substitution of defined variables or expressions in a given String with respected values. String Interpolation provides an easy way to process String literals. To apply this feature of Scala, we must follow few rules:

  1. String must be defined with starting character as s / f /raw.
  2. Variables in the String must have ‘$’ as prefix.
  3. Expressions must be enclosed within curly braces ({, }) and ‘$’ is added as prefix.

Syntax:

// x and y are defined
val str = s"Sum of $x and $y is ${x+y}"

Types of String Interpolator

  1. s Interpolator: Within the String, we can access variables, object fields, functions calls, etc.

    Example 1: variables and expressions:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program
    // for s interpolator
      
    // Creating object
    object GFG
        // Main method
        def main(args:Array[String])
        {
          
            val x = 20
            val y = 10
          
            // without s interpolator
            val str1 = "Sum of $x and $y is ${x+y}"
      
            // with s interpolator
            val str2 = s"Sum of $x and $y is ${x+y}"
          
            println("str1: "+str1)
            println("str2: "+str2)
        }
    }

    chevron_right

    
    

    Output:

    str1: Sum of $x and $y is ${x+y}
    str2: Sum of 20 and 10 is 30

    Example 2: function call

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program
    // for s interpolator
      
    // Creating object
    object GFG
        // adding two numbers
        def add(a:Int, b:Int):Int
        =
        
            a+b 
        }
          
        // Main method
        def main(args:Array[String])
        {
          
            val x = 20
            val y = 10
          
            // without s interpolator
            val str1 = "Sum of $x and $y is ${add(x, y)}"
      
            // with s interpolator
            val str2 = s"Sum of $x and $y is ${add(x, y)}"
          
            println("str1: " + str1)
            println("str2: " + str2)
        }
    }

    chevron_right

    
    

    Output:

    str1: Sum of $x and $y is ${add(x, y)}
    str2: Sum of 20 and 10 is 30
  2. f Interpolator: This interpolation helps in formatting numbers easily.

    To understand how format specifiers work refer Format Specifiers.

    Example 1: printing upto 2 decimal place:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program
    // for f interpolator
      
    // Creating object
    object GFG
        // Main method
        def main(args:Array[String])
        {
          
            val x = 20.6
          
            // without f interpolator
            val str1 = "Value of x is $x%.2f"
      
            // with f interpolator
            val str2 = f"Value of x is $x%.2f"
          
            println("str1: " + str1)
            println("str2: " + str2)
          
        }
    }

    chevron_right

    
    

    Output:

    str1: Value of x is $x%.2f
    str2: Value of x is 20.60

    Example 2: setting width in integers:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program
    // for f interpolator
      
    // Creating object
    object GFG
        // Main method
        def main(args:Array[String])
        {
          
            val x = 11
          
            // without f interpolator
            val str1 = "Value of x is $x%04d"
      
            // with f interpolator
            val str2 = f"Value of x is $x%04d"
          
            println(str1)
            println(str2)
        }
    }

    chevron_right

    
    

    Output:

    Value of x is $x%04d
    Value of x is 0011

    If we try to pass a Double value while formatting is done using %d specifier, compiler outputs an error. In case of %f specifier, passing Int is acceptable.

  3. raw Interpolator: String Literal should start with ‘raw’. This interpolator treats escape sequences same as any other character in a String.
    Example :printing escape sequence:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program
    // for raw interpolator
      
    // Creating object
    object GFG
        // Main method
        def main(args:Array[String])
        {
              
            // without raw interpolator
            val str1 = "Hello\nWorld"
      
            // with raw interpolator
            val str2 = raw"Hello\nWorld"
          
            println("str1: " + str1)
            println("str2: " + str2)
        }
    }

    chevron_right

    
    

    Output:

    str1: Hello
    World
    str2: Hello\nWorld


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.