例如,我有Hello123456
字符串,我想在TextView中将其显示为Hello
。
我在代码中需要这些数字而我无法删除它们。
修改
所有答案都提供了一种删除数字的方法,然后将其设置为textview,但我希望它们能够存在。
我得到了#34;你好"来自用户的部分,我将数字部分添加到它,这将是listview项的名称。但是我想在listview中显示hello部分,如果我检查了listview点击的项目是否以" 123456"它返回true。
答案 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+
正则表达式与Pattern
和Matcher
类一起使用。如果您不知道字符串长度,这也会有效。字符串可以是hello123
或olo123
答案 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;
}
}
这允许您显示没有数字的字符串,并在使用它们时仍然准备好它们。