我正在开发一个Android应用程序,我希望在其中比较EditText
中的一些字符串值。
例如,在第一个EditText
中,我开始进入" dav"然后选择" David"从键盘建议。在第二个EditText
中,我开始输入" dav",然后选择" David"从键盘建议,然后将内容更正为" Dav"。
每一个似乎都没问题。如果我检索EditText
(带getEditableText().toString().trim()
)的内容,调试器会告诉我" David"是由5个字符和#34; Dav"组成的单词。由3个字符组成的单词。
如果现在我点击包含" Dav"的EditText
我选择"大卫"从键盘的建议,调试器告诉我"大卫"由6个字符组成。最后一个字符是" \ u200B"。
为什么会自动添加此字符,如何以通用方式删除它?
感谢您的帮助。
答案 0 :(得分:0)
\u200B
是一个unicode字符zero width space。在我看来,它正在被你正在使用的键盘添加。我假设如果你改变你的键盘,你可能不会看到这种行为。
处理这种情况的一种方法是替换该角色并处理实际的String
:
@Test
public void zero_space_character() {
String David = "David\u200B";
String theRealDavid = David.replace("\u200B", "");
assertNotEquals(David, theRealDavid);
assertEquals("David", theRealDavid);
}
答案 1 :(得分:-1)
它应该是getText()。的toString()。修剪()。