【问题标题】:How do I insert String variable dynamically into a longer String variable?如何将字符串变量动态插入更长的字符串变量?
【发布时间】:2016-10-10 04:52:12
【问题描述】:

我正在尝试从文本输入字段中获取一个人的姓名,将其发送到另一个 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。

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

【问题讨论】:

    标签: java android string formatting


    【解决方案1】:

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

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

    但是,Android 系统会限制您的堆空间,低至 16 MB。因此,您实际上永远无法达到理论极限,并且将在 4-6400 万字符范围内的某个地方使用字符串达到最大值。 那么,当您可以直接使用 name 变量和长字符串变量时,为什么还要考虑更长的字符串变量。

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

    所以我的建议是直接使用您的 name 变量来显示您想要显示的消息。

    【讨论】:

    • String str = meaningText +""+mYourName
    【解决方案2】:
    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 Resource like as

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

    在资源文件中添加字符串

    <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);
    

    对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 2019-02-08
      • 1970-01-01
      • 2021-12-18
      相关资源
      最近更新 更多