2016-12-28 4 views
0

В следующем примере мне нужна переменная x2 в конечном итоге со значением my name is Paul вместо my name is $name, возможно ли это?Подстановка переменной в строковой переменной

scala> val name = "Paul" 
name: String = Paul 

scala> val xxx = s"my name is $name" 
xxx: String = my name is Paul 

scala> val x1 = "my name is $name" 
x1: String = my name is $name 

scala> val x2 = s"" + x1 
x2: String = my name is $name 
+0

Вы хотите сделать это только через интерполяцию строк? –

+0

Мне просто нужно заменить переменную в другой экземплярной переменной – ps0604

+0

Тогда использование старого стиля 'style' должно работать. –

ответ

5

Строковая интерполяция здесь не подходит, поскольку вы хотите отформатировать существующую строку. Вы хотите использовать C формат стиля строки:

println("my name is %s".format("paul")) 

Если вы хотите (хотя я не вижу никаких оснований), вы можете использовать StringContext непосредственно:

scala> val name = "paul" 
name: String = paul 

scala> StringContext("My name is ", "").s(name) 
res1: String = My name is paul 
+0

Я думаю, что OP заинтересован в способе интерполяции неинтерполированной строки, которая уже была создана ... –

+0

@Yuval Я достиг того, что вы показываете в переменной 'xxx', это не то, что мне нужно – ps0604

1

Это работает:

scala> val x4 = "my name is %s" 
x4: String = my name is %s 

scala> x4.format("Paul") 
res3: String = my name is Paul 
Смежные вопросы