有没有办法从字符串中隐藏一些字符?

时间:2014-08-19 06:46:59

标签: java android string

例如,我有Hello123456字符串,我想在TextView中将其显示为Hello

我在代码中需要这些数字而我无法删除它们。

修改

所有答案都提供了一种删除数字的方法,然后将其设置为textview,但我希望它们能够存在。

我得到了#34;你好"来自用户的部分,我将数字部分添加到它,这将是listview项的名称。但是我想在listview中显示hello部分,如果我检查了listview点击的项目是否以" 123456"它返回true。

5 个答案:

答案 0 :(得分:1)

 I want to show it as just "Hello" in a TextView.

然后只需将Hello放入TextView而不剪切字符串,或创建temporary string以保留"Hello"字符串。

如果您的字符串与此"HELLOHI12345"类似,那么您需要正则表达式来消除其中的所有数字字符串。

<强>样品:

textview.setText(s.replaceAll("[0-9]+", ""));

另请注意,字符串不可变,因此在执行replaceAll后,原始字符串不会被替换

答案 1 :(得分:1)

使用这个家伙! :)您可以使用contextDescription访问实际文本

    textView.setText(yourText.replaceAll("[0-9]",""));
    textView.setContentDescription(yourText);
    textView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            String str = ((TextView) v.getContentDescription()).toString();
        }
    });

答案 2 :(得分:0)

TextView可以附加tag,即某些对象作为额外数据存储到视图本身。查看文档:

在您的情况下,您可以为显示的文本指定“Hello”(使用下面的方法),并将tag设置为全文。

textView.setText(getDisplayText(helloString));
textView.setTag("TAG", helloString);

当用户点击您的视图时,您可以从视图中获取标记并使用它执行所需的操作。

这样,存储的数据比您看到的数据多。


(编辑前的原始答案)

如何满足您的需求:

private String getDisplayText(String input)
{
    return input.substring(0, 5);
}

然后在设置TextView

的值时使用该方法
textView.setText(getDisplayText(helloString));

答案 3 :(得分:0)

\\w+正则表达式与PatternMatcher类一起使用。如果您不知道字符串长度,这也会有效。字符串可以是hello123olo123

答案 4 :(得分:0)

无法隐藏字符串中的字符。您必须以不同的方式解决您的问题。我的建议是实现一个包含字符串的单独的类:

我会写一个包含字符串的类。然后向此类添加两个方法,返回显示和内部使用的字符串。 E.g。

class DataObject {

    private String data;

    public String forTextView() {
      //code from one of the answers above, may be the regex version
    }

    public Stringg getStringWithNumbers() {
        return data;
    }
}

这允许您显示没有数字的字符串,并在使用它们时仍然准备好它们。

相关问题