char" \ u200B"自动添加到EditText

时间:2017-05-09 10:05:55

标签: android android-edittext textview

我正在开发一个Android应用程序,我希望在其中比较EditText中的一些字符串值。

例如,在第一个EditText中,我开始进入" dav"然后选择" David"从键盘建议。在第二个EditText中,我开始输入" dav",然后选择" David"从键盘建议,然后将内容更正为" Dav"。

每一个似乎都没问题。如果我检索EditText(带getEditableText().toString().trim())的内容,调试器会告诉我" David"是由5个字符和#34; Dav"组成的单词。由3个字符组成的单词。

如果现在我点击包含" Dav"的EditText我选择"大卫"从键盘的建议,调试器告诉我"大卫"由6个字符组成。最后一个字符是" \ u200B"。

为什么会自动添加此字符,如何以通用方式删除它?

感谢您的帮助。

2 个答案:

答案 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()。修剪()。