Android编辑文字限制

时间:2015-11-21 17:51:29

标签: android android-edittext textwatcher

我的android应用程序中有一个编辑文本,我想避免用户在字节长度达到限制时输入输入。 它在英语中很好用,但不是希伯来语。

限制为256,因此当输入为希伯来语时,我只能插入128个字符。问题是我插入带有标点符号的希伯来字母。 假设我插入一个点,即1个字节,它允许我输入超过128个字符,即使字符只是希伯来字母和标点符号。

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            int length = s.toString().getBytes().length;

            if (length == bytes_limit)
            {
                str = s.toString();
            }
            else if (length > bytes_limit)
            {
                input.setText(str);
                input.setSelection(str.length());
            }

        }

更新:

字符串示例:“שלום,מהשלומך”

更新2:

 @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            int length = s.toString().getBytes().length;

            if (length <= bytes_limit)
            {
                str = s.toString();
            }
            else if (length > bytes_limit)
            {
                input.setText(str);
                input.setSelection(str.length());
            }

        }

2 个答案:

答案 0 :(得分:1)

尝试指定字符集,例如

int length = s.toString().getBytes("UTF-8").length;

用您需要的字符集替换UTF-8

bytes of a string in java?

Will String.getBytes("UTF-16") return the same result on all platforms?

答案 1 :(得分:0)

标点也是字符,除了你要写的希伯来字母之外你还要写它们(如果我没有错,你可以用ALT + XXXX添加它们)。 它们像其他任何人一样,所以当你写它们时,你会添加字符 点(。)没有标点符号,因此只需要一个字节。

要解决它,你可以删除所有的标点符号。

您可以创建一个忽略所有标点符号的函数:

private String removePunctuation(String s)
{
    for(int i = 0; i < s.length(); i++)
    {
        if(!(s.charAt(i) <= 'ת' && s.charAt(i) >= 'א'))
        {
        s = s.substring(0,i) + s.substring(i+1);
        }
    }
    return s;
}

请注意它会删除所有标点符号,包括-:等等...
您可以为条件添加例外,启用&#39; - &#39;或其他人。

祝你好运:)