例如,下面的代码a
和b
和c
相等。
EditText editText;
editText = (EditText) findViewById(R.id.edttxt);
editText.setText("1234");
int a, b, c;
a = editText.length();
b = editText.getText().length();
c = editText.getText().toString().length();
length()
与getText().length()
和getText().toString().length()
之间有何区别?
答案 0 :(得分:20)
.length()
和getText().length()
在their current implementation中相同。
.getText().toString().length()
会将CharSequence
转换为普通String
,然后计算其长度。在许多情况下,我希望返回与其他两个相同的值。但是,如果CharSequence
类似于SpannedString
,我不能排除存在影响长度计算的某种格式范围(例如,ImageSpan
)的可能性。
答案 1 :(得分:6)
这是表现的问题。
length
与getText
和length
完全相同,只会让您免于键入getText()
。
来自TextView
扩展的EditText
课程:
public CharSequence getText() {
return mText;
}
/**
* Returns the length, in characters, of the text managed by this TextView
*/
public int length() {
return mText.length();
}
至于toString
,它是相同的,但是,您所做的任何转换(CharSequence
=> String
)都会让您节省一点性能(所以很少你可能没注意到它。)
此外,当您转换内容时,您必须注意空指针异常,可能不是在这种情况下,但一般来说。
要回答这个问题,请使用length()
答案 2 :(得分:5)
length()
: - length()
函数是EditView
的继承方法,它由TextView
继承,返回文本的长度(以字符为单位)由此EditView
管理。因此,它会返回用户放入EditView
Contorl的文本长度。
getText().length()
: - 此声明中length()
函数不属于EditView
类。实际上,此length()
函数属于CharSequence
类,因为getText()
返回CharSequence
个对象。因此,此函数length()
将再次返回此序列中字符的数量。
.getText().toString().length()
: - here toString()
方法将CharSequence
对象转换为普通的不可变String
对象。所以,这里length()
函数属于String
类,它也返回String
对象的长度