在android中连接2个字符串?

时间:2014-04-03 05:56:55

标签: java android string-concatenation string-formatting

我在strings.xml的Toast中显示错误消息。

喜欢这个 mErrorMsgId=R.string.username_or_password_incorrectfull;

但现在我需要将消息与R.string.add_selfhosted_blog连接起来以避免翻译不一致。

阅读一些类似的问题,但无法弄清楚。

修改

我想在username_or_password_incorrectfull字符串中点击单词后连接nux_add_selfhosted_blog ...

<string name="username_or_password_incorrectfull">The username or password you entered is incorrect
 \- If you\'re a self hosted user, don\'t forget to tap **Add Self Hosted Site** and fill the URL field</string> 

<string name="nux_add_selfhosted_blog">Add self-hosted site</string>

我怎么能实现这个?

8 个答案:

答案 0 :(得分:4)

你直接将R.string.username_or_password_incorrectfullR.string.add_selfhosted_blog连接在一起,因为它们不是String个实例,而是strings.xml中实际字符串的资源ID。你可以得到2个字符串,然后正常连接它们。

这样的事情:

String string1 = getResources().getString(R.string.username_or_password_incorrectfull);
String string2 = getResources().getString(R.string.add_selfhosted_blog);

String combined = string1 + string2;

答案 1 :(得分:1)

方法的第二个参数makeText接受stringResId或只接受String

例如:

String error = getResources().getString(R.string.username_or_password_incorrectful);
String error2 = getResources().getString(R.string.add_selfhosted_blog);
String conctString = error + " " + error2;
Toast.makeText(context, conctString, duration).show();

答案 2 :(得分:0)

如果您想简单地从String资源中结合这两个strings.xml,那么您可以实现这一目标......

String errorMessage = getString(R.string.username_or_password_incorrectfull) + getString(R.string.add_selfhosted_blog);

然后在`Toast

中显示连接的错误消息
Toast.makeText(context, errorMessage, Toast.LENGTH_SHORT).show();

答案 3 :(得分:0)

您可以按照以下方式在另一个字符串的中间插入一个字符串,

String mErrorMsgId = getResources().getString(R.string.username_or_password_incorrectfull); // +  getResources().getString(R.string.nux_add_selfhosted_blog);

String firstPart = mErrorMsgId.substring( 0, mErrorMsgId.indexOf( "tap") + 4 );
String selfhosted_blog = getResources().getString(R.string.nux_add_selfhosted_blog) + " ";
String thirdPart = mErrorMsgId.substring( mErrorMsgId.indexOf( "tap") + 4 );
mErrorMsgId = firstPart + selfhosted_blog + thirdPart;

答案 4 :(得分:0)

只需从两个ID中检索字符串并像往常一样使用+连接,并将结果字符串变量放入Toast中。

String messageToUser = getResources().getString(R.string.username_or_password_incorrectfull) +  getResources().getString(R.string.add_selfhosted_blog);
Toast.makeText(context, messageToUser, Toast.LENGTH_SHORT).show();

答案 5 :(得分:0)

你可以使用MessageFormat。

将username_or_password_incorrectfull设置为格式字符串

...忘记点按{0}并填写网址...

然后使用MessageFormat.format(username_or_password_incorrectfull,nux_add_selfhosted_blog)

答案 6 :(得分:0)

您可以使用我创建的该库来进行此操作:https://github.com/LikeTheSalad/android-string-reference,它将根据您定义的模板字符串将您要使用的所有字符串连接起来,然后在构建时生成最终的XML字符串。因此,对于您的情况,可以这样定义字符串:

<string name="nux_add_selfhosted_blog">Add self-hosted site</string>
<string name="template_username_or_password_incorrectfull">The username or password you entered is incorrect
 \- If you\'re a self hosted user, don\'t forget to tap ${nux_add_selfhosted_blog} and fill the URL field</string>

然后在构建项目之后,将生成以下字符串:

<string name="username_or_password_incorrectfull">The username or password you entered is incorrect
     \- If you\'re a self hosted user, don\'t forget to tap Add self-hosted site and fill the URL field</string>

对于您对模板和/或值所做的任何更改,该工具都会使此自动生成的字符串保持更新。在回购页面上的更多信息。

答案 7 :(得分:0)

您可以像在C#/ Java中一样简单地添加/连接字符串,

这里的地址1和地址2是EditText(TextBox)

String finalString = Address1.getText().toString() + " "+ Address2.getText().toString();