如何将String变量动态插入到更长的String变量中?

时间:2016-10-10 04:52:13

标签: java android string formatting

我试图从文本输入字段中取一个人的名字,将其发送到另一个Activity,并在TextView中的句子中显示该人的姓名。

我的代码如下:

这是我的一项活动。

String meaningText = mCurrentColor.getMeaning();
meaningText = String.format(meaningText, mYourName);
mColorText.setText(meaningText);

我从另一个类中提取含义字符串,该类包含以下内容:

"Hey %1$s, you chose this which means blah blah....."

然后我想插入从前一个Activity中的EditText中提取的mYourName变量,并将其放在上面的字符串中。

我发现从Team Treehouse教程中进行格式化,并且我按照该项目的代码工作。

我正在使用String.format,它接受一个Locale。

我不确定到底是什么问题,因为我将代码镜像为“T”并且只更改了一些变量名称。

2 个答案:

答案 0 :(得分:0)

看到String类的length()方法返回一个int值,该方法返回的最大长度为Integer.MAX_VALUE,即2 ^ 31 - 1(或大约20亿。)

理论上你可以拥有2,147,483,647个字符串。我认为你不应该需要更多。

但是,Android系统会限制您的堆空间,最低可达16 MB。因此,你实际上永远不会达到理论极限,并且会在4-64百万字符范围内的某个地方最大化。 所以,当你可以直接使用你的名字变量和长篇的字符串变量时,你为什么要考虑一个更长的字符串变量。

for Ex:-
String meaning_text = "the very long message you wanted to show..."+ mYourName + "again a long message if you want to show"; 

所以我的建议是直接使用你的名字变量和你想要显示的信息。

答案 1 :(得分:0)

EditText edt=(EditText)findViewbyId(R.id.edt);
edt.setText("Dipali");

现在,从edittext获取值并在TextView字符串资源中替换。

String strEdtTextValue=edt.getText().toString();

TextView tV=(TextView)findViewById(R.id.txtView)

将textview中的文本设置为xml资源,如

dummy ="嘿%1 $ s,你选择了这个,这意味着等等......"

在资源文件中添加字符串

<string name="dummy">Hey %1$s, you chose this which means blah blah.....</string>

Resources res = getResources();
String dumyText= (res.getString(R.string.dummy),strEdtTextValue);
tv.setText(dumyText);

对你有帮助。