How can I put a variable into java text block?
Like
\"\"\"
{
...
\"someKey\": \"someValue\",
\"date\": \"${LocalDate.now()}\",
...
}
\"\"\"
You can use %s
as placeholder in text blocks
String str = """
{
...
"someKey": "someValue",
"date": %s,
...
}
"""
and replace it using format
String.format(str,LocalDate.now());
From jeps 355 docs
A cleaner alternative is to use String::replace or String::format, as follows:
String code = """
public void print($type o) {
System.out.println(Objects.toString(o));
}
""".replace("$type", type);
String code = String.format("""
public void print(%s o) {
System.out.println(Objects.toString(o));
}
""", type);
Another alternative involves the introduction of a new instance method, String::formatted, which could be used as follows:
String source = """
public void print(%s object) {
System.out.println(Objects.toString(object));
}
""".formatted(type);
Note : But as side note from java-13 docs String.formatted
is deprecated and suggested to use String.format(this, args).
This method is associated with text blocks, a preview language feature. Text blocks and/or this method may be changed or removed in a future release.