我有一个EditText来获取描述,并希望设置最大长度为145个字符。 我在XML中设置了maxlength 145。这适用于英语。 但对于英语以外的语言,特定的,马拉地语,印地语等,它不能正常工作。我将每个符号都算作单独的字符。
例如:“व्ही”
这被认为是印地语中的一个字符,它的长度应为1,但它返回长度为2。
中看到了解决方案但它不适用于印地语/马拉地语,因为它无法检测连接的字符。如何检测连接的字符?
提前致谢:)
答案 0 :(得分:0)
Plz试试这段代码
String str = "व्ही";
int count = 0;
for(int i=0; i<str.length(); i++)
{
if(!isMark(str.charAt(i)))
count++;
}
textview.setText(count);
答案 1 :(得分:0)
试试这个:
import java.text.BreakIterator;
import java.util.Locale;
public class MyClass {
private int graphemeClusterCount(Locale locale) {
String text = "व्ही";
BreakIterator breakIterator = BreakIterator.getCharacterInstance(locale);
breakIterator.setText(text);
int count = 0;
int start = breakIterator.first();
for (int end = breakIterator.next();
end != BreakIterator.DONE;
start = end, end = breakIterator.next()) {
count++;
}
return count;
}
}
一些参考文献:
关于它所谓的字形集群的Unicode常见问题:http://unicode.org/faq/char_combmark.html#7
Android文档中的示例代码:https://developer.android.com/reference/java/text/BreakIterator.html
ICU也实施BreakIterator
:http://site.icu-project.org/您可以在Gradle中导入:
compile 'com.ibm.icu:icu4j:58.2'