5

Is possible to concatenate a String already existing in strings.xml with the current one.
That is: If I have

<string name="hello">hello</string>

and I want to create a new string with the format "Your android says "+hello

4 Answers 4

24

I am afraid that is not possible in strings.xml.

What you can do is create the final string programmatically using getString:

String outStr = getString(R.string.your_android_says) + 
  " " + getString(R.string.hello);
Sign up to request clarification or add additional context in comments.

Comments

10

Not sure if this is what you want:

String s = "Your android says" + getResources().getString(R.id.name);

What you could also do it like:

<string name="hello">%s hello</string>

String androidsays = "Your android says";
String s = getString(R.id.name, androidsays);

2 Comments

the latter is the way to do it
how if %s has more than 2 ?
2

you can create any number of altered string , but bounded upto runTime memory only . you can't store persistently this new string like usually you do through values/string.xml .

example String newString = "something" + getResources().getString(id);

sharedPreferences in the way you can achieve this . store newly generated string into sharedpreferences and access later .

Comments

0

If you want to do so without having to add any Java/Kotlin code, you could use this small library I've created: https://github.com/LikeTheSalad/android-stem

It allows you to do something like this:

<string name="app_name">world</string>
<string name="welcome_message">hello ${app_name}</string>

And then the library does this at build time:

<!-- Auto generated during compilation -->
<string name="welcome_message">hello world</string>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.